ある列のセルのうち空白セルを間引いて“詰める”
B列の一連のセルには空のセルが含まれている。この空のセル部分を詰めて、空でないセルがひと続きとなるようにしたい。
- D列: B列の各行のセルが空でないかどうかを判定する。
- E列: B列の空でないセルを上から検索して、最初に空でないセルが見つかった位置を出力する。ただし検索開始位置(検索範囲の上端)は、直前の検索(現在セルがE2ならば直前の検索式のセルはE1)で空でないセルが見つかった位置の1つ下になる。
- F列: 直前の検索(現在セルがE2ならば直前の検索式のセルはE1)で空でないセルが見つかった位置を出力する。F5セルはE4セルの値を表示するし、F12セルはE11セルの値を表示する。F4セルは参照先がないので0である。
- G列: F列の値から"D4:D10000"形式のセル範囲記述を生成して表示する。この値は、E列で行う検索の検索対象範囲(とくにその検索開始位置)を決定する。
- H列: E列の検索で結果(空でないセルの位置情報)が得られたかどうかを判定して表示する。
- J列: H列の判定結果をみて、TRUEならばE列のセルの値(位置情報)を使用してB列のセルの値(詰めて表示したい情報)を抽出して表示する。FALSEならば単に""(空文字列)を表示する。
列名 | 説明/計算式 |
---|---|
B列 | (空白を含む一連のセル) |
D列 | =B4<>"" |
E列 | =MATCH(TRUE,INDIRECT(G4),0)+F4 |
F列 | =IF(ROW($F$4)=ROW(),0,INDIRECT("R"&(ROW()-1)&"C"&(COLUMN()-1),FALSE)) |
G列 | ="D"&(ROW($E$4)+F4)&":D10000" |
H列 | =NOT(ISNA(E4)) |
J列 | =IF(H4,INDIRECT("B"&(ROW($E$4)-1+E4)),"") |
※計算式はシート4行目でのもの。"$B$4"形式ではなく"B4"形式になっているものは、当然セルのコピーによって相対的に変化していく。