「StiLL」 デザイン情報177 StiLLコマンド--セルナイ複数フクスウギョウ個々ココのセルにける
                             
  【テーマ】 セルナイ改行カイギョウされている複数フクスウギョウ文字列モジレツを1ギョウずつ1つのセルに分解ブンカイしたいときってありませんか?この処理ショリ方法ホウホウについてご紹介ショウカイします。     方法ホウホウ文字列モジレツフクまれている改行カイギョウコードを検索ケンサクして、1ギョウずつに分解します。基本的キホンテキ分解ブンカイはExcel関数カンスウオコナいます。ここでは 「繰返し実行(BtLoop)」 と 「入力範囲の値を出力範囲にセットする(BtSetMultiCell)」 の2つのセルリンクボタンを使用シヨウして実装ジッソウします。     参考サンコウ説明セツメイ使ツカわれているIFERROR関数はExcel2007以降で使用できます。それ以前のExcelをご使用の場合はIF関数とISERROR関数で組み替えてください。  
  対応Ver. :StiLL-XV1.0 以降
対応種類:StiLL Dev・Pro
    対応Ver. :StiLL-XV1.0 以降
対応種類:StiLL Dev・Pro
    対応Ver. :StiLL-XV1.0 以降
対応種類:StiLL Dev・Pro
 
                             
 今回コンカイ内容ナイヨウ                          
ヒトつのセルのナカ改行カイギョウされている文字列モジレツをセル単位タンイギョウ)にハナ処理ショリについてご紹介ショウカイします。
1つのセルにハイっている文字モジを改行で分けます
今回の「切り離し処理」の考え方を整理します。 あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
あいうえお
 1.セル内で改行カイギョウされている文字列から改行されている部分(改行コード)を見つけます。 かきくけこ
 2.見つけた改行コードまでの文字列を1行として切り取ります。 さしすせそ
 3.切り取った文字列を出力開始セルにコピーします。 たちつてと
 4.1〜3までを出力開始行を変更させながら文字列がなくなるまで繰り返します。 なにぬねの
 設定セッテイについての説明セツメイ                        
下図カズのようにセルG17(赤丸アカマル)に入力ニュウリョクされている改行カイギョウされた文字モジレツをセルG29から行単位ギョウタンイハナして出力シュツリョクする処理ショリオコナいます。
全体ゼンタイ
 セルリンクボタンを3つ使ツカって処理ショリオコナいます。
 1)初期値ショキチセット(BtSetValue)
    モト文字モジ(G17セル)のアタイを、作業サギョウ領域リョウイキ(D26セル)にコピーしておきます。
 2)カエ実行ジッコウ(BtLoop)
    元の文字(G17セル)のナカハイっている改行カイギョウコードのカズで、複数セル値セット(BtSetMultiCell)「ボタン11」 をカエ実行ジッコウします。
    改行カイギョウコードのカズは、「終了シュウリョウ数値スウチ」(D33セル)にハイっている数式スウシキでカウントしています。
=LEN(Pシート1!G17)-LEN(SUBSTITUTE(Pシート1!G17,CHAR(10),""))
  @SUBSTITUTE関数カンスウモト文字モジ(G17セル) にハイっている改行カイギョウコードをカラ文字モジ "" にえ、
  A@の結果ケッカ文字数モジスウカゾえて
  Bモト文字モジ(G17セル) の文字数モジスウからAの文字数モジスウザンすると、改行カイギョウコードのカズカゾえることができます。
 3)複数セル値セット(BtSetMultiCell)
    このボタンでは、2つのコピー処理を行っています。
    入力範囲1のセル値を出力範囲1に、また入力範囲2のセル値を出力範囲2にコピーします。
    入力ニュウリョク範囲ハンイ1:のAを参照サンショウ
A(F42セル)では作業サギョウ領域リョウイキ(D26セル)の文字モジ改行カイギョウコードでシキを設定しています。
=LEFT(Pシート1!D26,IFERROR(FIND(CHAR(10),Pシート1!D26)-1,LEN(Pシート1!D26)))
  @FIND関数カンスウ作業サギョウ領域リョウイキ(D26セル)の最初サイショ改行カイギョウコードまでの位置イチ取得シュトクして
  ALEFT関数カンスウで作サギョウ業領リョウイキ域(D26セル)の最サイショ初の文字モジから@から1をいた位置イチまでの文字モジします。
  BIFEEROR関カンスウは改カイギョウ行コードがない場バアイショリを指シテイ定しています。
  CLEN関数カンスウでは、D26セルの文字モジをすべてすようにしています。
    入力ニュウリョク範囲ハンイ2:のBを参照サンショウ
B(F43セル)では作業サギョウ領域リョウイキ(D26セル)からAでした文字モジノゾシキ設定セッテイしています。
=IF(Pシート1!D33>Pシート1!E35,SUBSTITUTE(Pシート1!D26,Pシート1!F42&CHAR(10),"",1),"")
  @SUBSTITUTE関カンスウ数でAの文モジと改カイギョウ行コード合わせた文字モジレツカラ空文モジ字にえます。
    オナ文字モジレツギョウがあっても同時ドウジノゾかないように1(バン)を指定シテイしています。
  AIF関数カンスウ終了シュウリョウ数値スウチ(D33セル)とカウンタ(E35セル)を比較ヒカク終了シュウリョウ数値スウチタッしたら空白クウハク設定セッテイしています。
    出力シュツリョク範囲ハンイ1(D45セル)は出力シュツリョクするギョウ変化ヘンカさせるようにカウンタ(E35セル)をギョウ加算カサンしています。
=ADDRESS(ROW(Pシート1!G29)+Pシート1!E35,COLUMN(Pシート1!G29),4,1,Pシート1!D12)
  @ROW(Pシート1!G29)+Pシート1!E35でギョウ加算カサンしています。
    カウンタを単純タンジュン加算カサンできるようBtLoopの初期ショキ数値スウチ(D32セル)を0にしています。
    の「Pシート1!G33」はカイカエ返した最サイゴ後のセルが表ヒョウジ示されています。
  APシート1!D12でシートメイ参照サンショウしています。
    出力シュツリョク範囲ハンイ2(D46セル)は作業サギョウ領域リョウイキ(D26セル)を指定シテイしています。(固定コテイ
上記の設定でセル内改行された文字列をセル単位(ギョウ)に出力することができます。
■ ご参考サンコウまでに                        
1.改行カイギョウコードをベツ文字モジタトえばカンマ「,」にえると、カンマで区切クギられた文字列モジレツをセル単位タンイ出力シュツリョクすることも可能カノウです。
2.BtSetMultiCellの出力シュツリョク範囲ハンイ1のシキでカウンタをレツ(COLUMN)にクワえることでヨコ展開テンカイ表示ヒョウジさせることも可能カノウです。
3.今回コンカイ処理ショリの「@ボタン連続レンゾク実行ジッコウ(MakeBtPush)」に設定セッテイすることができます。
   そのサイは、最初サイショ指定シテイ画面ガメン描画ビョウガoff(DispOff)ボタンを設定セッテイすると、結果ケッカ一度イチド表示ヒョウジされ処理ショリ時間ジカン短縮タンシュクされます。
4.IFERROR関数カンスウはExcel2007以降イコウ使用シヨウできます。それ以前イゼンのExcelをご使用シヨウ場合バアイはIF関数カンスウとISERROR関数カンスウえてください。
(各ボタンの設定内容の詳細はStiLLヘルプをご確認ください)  
Copyright(C) アイエルアイ総合研究所 無断転載を禁じます