「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」は5カイ回ク繰りカエ返した最サイゴ後のセルが表ヒョウジ示されています。
  �APシート1!D12でシート名メイを参照サンショウしています。
    出力シュツリョク範囲ハンイ2(D46セル)は作業サギョウ領域リョウイキ(D26セル)を指定シテイしています。(固定コテイ)
上記の設定でセル内改行された文字列をセル単位(行ギョウ)に出力することができます。
■ ご参考サンコウまでに                        
1.改行カイギョウコードを別ベツの文字モジ、例タトえばカンマ「,」に置オき換カえると、カンマで区切クギられた文字列モジレツをセル単位タンイに出力シュツリョクすることも可能カノウです。
2.BtSetMultiCellの出力シュツリョク範囲ハンイ1の式シキでカウンタを列レツ(COLUMN)に加クワえることで横ヨコに展開テンカイ表示ヒョウジさせることも可能カノウです。
3.今回コンカイの処理ショリを図ズの「�@ボタン連続レンゾク実行ジッコウ(MakeBtPush)」に設定セッテイすることができます。
   その際サイは、最初サイショの指定シテイに画面ガメン描画ビョウガoff(DispOff)ボタンを設定セッテイすると、結果ケッカが一度イチドに表示ヒョウジされ処理ショリ時間ジカンも短縮タンシュクされます。
4.IFERROR関数カンスウはExcel2007以降イコウで使用シヨウできます。それ以前イゼンのExcelをご使用シヨウの場合バアイはIF関数カンスウとISERROR関数カンスウで組クみ替カえてください。
(各ボタンの設定内容の詳細はStiLLヘルプをご確認ください)  
Copyright(C) アイエルアイ総合研究所 無断転載を禁じます