- ベストアンサー
表のばらばらの文字列を1列にまとめたい 関数
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>とりあえず1行に1個ずつ出現すると考えてもらっていいです。 という事と、入力される値が数値や日時ではなく文字列データであという事であれば、G1セルに次の関数を入力してからG1セルをコピーしてG2以下に貼り付けて下さい。 =IFERROR(HLOOKUP("*?",$A1:$D1,1,FALSE),"") 或は =IF(COUNTIF($A1:$D1,"*?"),HLOOKUP("*?",$A1:$D1,1,FALSE),"")
その他の回答 (2)
- kagakusuki
- ベストアンサー率51% (2610/5101)
ユーザー定義関数を使う方法は如何でしょうか? まず、下記のVBAマクロを標準モジュールに書き込んで下さい。 Function JOIN2D(セル範囲 As Range, Optional 列区切り文字 As String = "", Optional 行区切り文字 As String = "") Dim c As Range, tempRow As Long, myString As String, strJ As String For Each c In セル範囲 If c.Value <> "" Then strJ = 列区切り文字 If c.Row <> tempRow And セル範囲.Rows.Count > 1 Then strJ = 行区切り文字 If tempRow = 0 Then strJ = "" myString = myString & strJ & c.Value tempRow = c.Row End If Next c JOIN2D = myString End Function その上で、例えばA1:D1のセル範囲に入力されている値をまとめた文字列を表示させたいセルに、次の様に入力して下さい。 =JOIN2D(A1:D1,",") するとA1:D1のセル範囲に入力されている値が「,」で区切られた形で表示されます。(空欄のセルは無視されます) また例えば、B1:E3のセル範囲に、各々のセル番号と同じ文字列が入力されていた場合において、適当なセルに =JOIN2D(B1:E3,"あいう","えお") と入力しますと、次の様な結果が表示されます。 B1あいうC1あいうD1あいうE1えおB2あいうC2あいうD2あいうE2えおB3あいうC3あいうD3あいうE3 また、"えお"の代わりにCHAR(10)を入力しておけば、 B1あいうC1あいうD1あいうE1 B2あいうC2あいうD2あいうE2 B3あいうC3あいうD3あいうE3 と表示されます。 上記の,"あいう"と"えお"の部分はどちらも省略可能で、省略した場合には区切り文字なしで文字列が結合されます。
お礼
できました。すごく難しいと思ってやってませんでした。ありがとうございました!
- msMike
- ベストアンサー率20% (364/1804)
G1: =A1&B1&C1&D1 「ぎょぎょ、できてますね!」では?
補足
136列あるのに? 全然できてません
お礼
わ、すごい、できてますね。いろいろネットで調べたのに分からなくて、こんなに早く回答がいただけるとは思いませんでした。ありがとうございました!