TRIM参照の活用! #Excel #LifeHacks #Office
VSTACKは複数範囲を“縦に連結”できて便利なんですが、実務だと「空白行が混ざる」「0を表示したくない」問題に当たりがちです。私が名簿(No/氏名)を2表から1つにまとめたときにハマったので、やりやすかった手順をまとめます。 まずおすすめは、元データをテーブル化して“TRIM参照(構造化参照)”で範囲を指定することです。普通の範囲(B4:C18みたいな指定)だと、行数が増減したときに式の修正が必要になります。でもテーブル(例:名簿1、名簿2)にしておけば、行が増えてもVSTACKが自動で追従してくれます。 例)2つのテーブルを縦結合(No/氏名の2列) =VSTACK(名簿1[[No]:[氏名]], 名簿2[[No]:[氏名]]) 次に「空白行を除く」です。VSTACK自体に“空白行を消す”オプションはないので、FILTERで落とすのが定番でした。ポイントは“判定に使う列”をVSTACKして、空白じゃないものだけ残すこと。 例)氏名が空白の行を除外 =LET( data, VSTACK(名簿1[[No]:[氏名]], 名簿2[[No]:[氏名]]), key, VSTACK(名簿1[氏名], 名簿2[氏名]), FILTER(data, key<>"") ) そして「0を表示しない」。0が出る原因は主に2つあって、(1) 本当に0が入っている、(2) 数式の結果が0になっている、です。 (1) “入力としての0”を消したいなら、判定列をNoにして「No<>0」でもOKです。 例)Noが0の行を除外 =LET( data, VSTACK(名簿1[[No]:[氏名]], 名簿2[[No]:[氏名]]), no, VSTACK(名簿1[No], 名簿2[No]), FILTER(data, (no<>0)*(no<>"")) ) (2) 数式が0を返しているだけなら、元の表側で 0 を空欄に寄せるのも手です(表示だけ整えたい時)。例えば元データの計算列を =IF(結果=0,"",結果) のようにしておくと、後段のVSTACK+FILTERがシンプルになります。 最後に小ワザですが、見た目の“空白”にスペースが混ざっていると key<>"" で除外できないことがあります。そういう時は TRIM(key)<>"" で判定すると安定しました(氏名列に余計な空白が入りがちな名簿あるある)。 この組み合わせ(テーブル化+TRIM参照+FILTER)にしてから、名簿の追加・削除があっても式を触らなくてよくなってかなり快適でした。











































