『VSTACK:複数シート最終行変動データをまとめたい』(ラベルシート)
VSTACKで複数シートのデータをまとめたいです
以下のデータをまとめる方法を教えていただけないでしょうか
・Sheet1からSheet3シートが対象
・AからC列にデータがある
・1行目は項目名
・各シートの最終データ行は変動
まずSheet1からSheet3を対象として、
最終行を4行固定としてまとめる式を作りました
=VSTACK(Sheet1:Sheet3!A2:C4)
2から4行固定ですが、Sheet1からSheet3をまとめれました
次にSheet1を対象として、
最終行が変動のデータをまとめる式を作りました
=VSTACK(INDIRECT("Sheet1!A2:C"&MAX(IF(Sheet1!A:C<>"",ROW(Sheet1!A:C)))))
Sheet1だけですが、最終行を変動でまとめれました
この2つを合わせて
Sheet1からSheet3を対象として、最終行を変動でまとめる式を作りました
=VSTACK(INDIRECT("Sheet1:Sheet3!A2:C"&MAX(IF(Sheet1:Sheet3!A:C<>"",ROW(Sheet1:Sheet3!A:C)))))
これでは #REF! とエラーになりました
以下のようにシートを個別に指定すればまとめることはできました
=VSTACK(
INDIRECT("Sheet1!A2:C"&MAX(IF(Sheet1!A:A<>"",ROW(Sheet1!A:A)))),
INDIRECT("Sheet2!A2:C"&MAX(IF(Sheet2!A:A<>"",ROW(Sheet2!A:A)))),
INDIRECT("Sheet3!A2:C"&MAX(IF(Sheet3!A:A<>"",ROW(Sheet3!A:A))))
)
しかし、実際に利用したいファイルはシート数が多いので
Sheet1:Sheet3!のように範囲指定の式にしたいです
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
=TOCOL(DROP(HSTACK(Sheet1:Sheet4!B:B),1),1,TRUE) HSTACKで各シートの列を横方向に展開する→DROPで1行目おとす→TOCOLで1列にまとめる (´・ω・`) 2025/06/03(火) 15:32:54
あらかじめ多めの範囲(500行)をまとめて FILTER関数で空白以外を抽出する =LET(x,VSTACK(Sheet1:Sheet3!A2:C500),FILTER(x,CHOOSECOLS(x,1)<>"")) (どん) 2025/06/03(火) 15:38:50
(´・ω・`)さん
この計算式はB列でしょうか、A,Cをそれぞれコピーして作成してみましたが、
ブランク部分は上に詰まった結果になりました
(どん) さん
A列がブランクの行は非表示になりました
B,Cがブランクの行は値が0となって表示されました
(ラベルシート) 2025/06/03(火) 16:07:10
(どん)さん のをアレンジ。
=LET(x,VSTACK(Sheet1:Sheet3!A2:C10),FILTER(x,(CHOOSECOLS(x,1)<>"")+(CHOOSECOLS(x,2)<>"")+(CHOOSECOLS(x,3)<>"")))&""
とか。
(名無し) 2025/06/03(火) 16:27:07
ただし、単純に末尾の &"" で0を非表示にしてるので、データが全て文字列になってしまいます。
これを避けるのであれば、
=LET(x,VSTACK(Sheet1:Sheet3!A2:C10),FILTER(x,(CHOOSECOLS(x,1)<>"")+(CHOOSECOLS(x,2)<>"")+(CHOOSECOLS(x,3)<>"")))
こうしておいて、書式設定で0を表示しないようにするとか。
(名無し) 2025/06/03(火) 16:33:03
おっと。 C10 は適当に広げてくださいね。
(名無し) 2025/06/03(火) 16:42:46
=LET(x,VSTACK(Sheet1:Sheet3!A2:C10),FILTER(IF(ISBLANK(x),"",x),(CHOOSECOLS(x,1)<>"")+(CHOOSECOLS(x,2)<>"")+(CHOOSECOLS(x,3)<>"")))
(ラベルシート) 2025/06/03(火) 17:09:54
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.