- ベストアンサー
Excelで複数の結果を一つのセルに表示させる方法
データ A B C D E F G ・・・ イ * * * ロ * ハ * * から、行ごとに集計して、「*」のあるアルファベットを一つのセルに表示させるということをしたいのですが、良い方法が見つかりません。 例えば、イの行であれば[A B D]、ハの行であれば「B E」という感じです。 「LOOKUP関数」だと、最初にHITしたものしか返ってきません。 一つではなく、複数欲しいのです。 Excelに不慣れな者ですが、複雑な式であっても何とか頑張りたいと思います。 どなたかご教示お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
例えばB1セルにA,C1セルにB,D1セルにC・・・とH1セルまで入力されているとしてJ2セル方下方にお求めの表示をさせるとしたらJ2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B2<>"",B$1,"")&IF(C2<>"",C$1,"")&IF(D2<>"",D$1,"")&IF(E2<>"",E$1,"")&IF(F2<>"",F$1,"")&IF(G2<>"",G$1,"")&IF(H2<>"",H$1,"") 列がもっと多くなってもも同様の式を追加すればよいだけです。
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! VBAでの一例です。 Sheet1にあるデータをSheet2のA列に表示するようにしてみました。 Sheet1の1行目に表示したいデータが、アスタリクス「*」はB列以降に入っているとします。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面になりますので、 ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim str As String Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = 2 To ws1.Cells(i, Columns.Count).End(xlToLeft).Column If ws1.Cells(i, j) = "*" Then str = str & ws1.Cells(1, j) End If Next j ws2.Cells(i, 1) = str str = "" Next i End Sub 'この行まで 他に良い方法があればごめんなさいね。m(_ _)m
お礼
ご回答ありがとうございます。 マクロって扱ったことがなく、敷居が高いというか、キャーという感じです。 でも、時間をかけてチャレンジしてみようと思います。 ありがとうございました(*^_^*)
- ami0607
- ベストアンサー率41% (5/12)
これは*を変換したらダメなんですか? *のままじゃないといけないんでしょうか? もし変えていいなら簡単にできる方法はありますが、、あと、列は長いのでしょうか?(Gまでですか?)
お礼
出口が見えてきました!!! 「*」を変換すればいいんですよね!!! ありがとうございました(*^_^*)
補足
ありがとうございます! 「*」の変換はO.K.です。 列は 150列 ほどあります。
お礼
ありがとうございます! できました!!! というか、なるほどです。勉強になります(*^_^*)