Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Home : Excel 2019)
複数列のデータを空白をつめて1列にしたい
投稿日時: 24/05/14 11:19:59
投稿者: なつ

いつも参考にさせていただいています。
 
表題の件ですが、「複数列のデータを空白を詰めて1列にしたい」です。
 
データイメージは以下の通りです。
 

  L     M  〜  R
2 好きなもの
3 @     A  〜  F
4 滑り台  ブランコ  鉄 棒
5 雲 梯  滑り台  ブランコ
6 滑り台  ブランコ  鉄 棒
7 雲 梯  滑り台
8 滑り台

 
データ内容は
1.アンケート結果なので、毎月データ数が違う
2.複数回答のため、回答数がばらばら
 
これを1列にまとめ、毎月集計を行います。
色々調べて以下の式で1列にすることはできました。
=INDEX('R6 入力シート'!$L$4:$R$120,INT((ROW()-1)/5)+1,MOD(ROW()-1,5)+1)
(EXCEL2019のためTOCOL関数は使用できませんでした)
ただこれだと以下のようにデータが入っていない分も0として表示されてしまいます。
 
滑り台
雲 梯
滑り台
雲 梯
滑り台
ブランコ
滑り台
ブランコ
滑り台
0
鉄 棒
ブランコ
鉄 棒
0
0
 
この0の部分を詰めて表示することはできるでしょうか。
ご教示ください。

回答
投稿日時: 24/05/14 11:51:50
投稿者: sk

引用:
Excel 2019

引用:
複数列のデータを空白を詰めて1列にしたい

引用:
データ内容は
1.アンケート結果なので、毎月データ数が違う
2.複数回答のため、回答数がばらばら

最終的な目的が「質問/回答ごとの件数の集計」なのであれば、
Power Query の使用を検討されることをお奨めします。

回答
投稿日時: 24/05/14 12:39:46
投稿者: んなっと

INDIRECT関数を使ってもいいのなら
 
=IFERROR(INDIRECT("'R6 入力シート'!"&TEXT(AGGREGATE(15,6,100*ROW(L$4:R$120)+COLUMN(L$4:R$120)/('R6 入力シート'!L$4:R$120<>""),ROW()),"!R0C00"),FALSE),"")

投稿日時: 24/05/14 13:15:05
投稿者: なつ

sk さん
 
返信をありがとうございます。
 
はい、最終的には集計します。
データを1列にして、ピボットテーブルで集計の形にしようと思っていました。
 
Power Queryという名前は聞いたことがありましたが、使い方がよく分かりませんので
調べてトライしてみようと思います。
 
ありがとうございました。
 

投稿日時: 24/05/14 13:21:56
投稿者: なつ

んなっと さん
 
返信をありがとうございます。
 
ご教示いただいた関数で試してみたところ0なしで表示されました!
INDIRECT関数は揮発性関数なので注意が必要と思いますが、データ件数が少なく
とても軽いものなので問題ないのではないかと思っています。
 
Power Queryも勉強しつつ使いやすシートを作成したいと思います。
 
ありがとうございました。