- 締切済み
ExcelシートからA,B,C,D,Eといったようにコンマ区切りで 抜き出したい
ExcelVBAに関するマクロについて教えてください。 A|B|C|D|E|○ -+-+-+-+-+-- F|G|H|I|J|× -+-+-+-+-+-- K|L|M|N|O|○ というExcelがあったときに 1行6列目のように○があれば、 A,B,C,D,Eといったようにコンマ区切りで 抜き出したいですが、マクロの組みかたが 分かりません。 ×のときは、無視し、3行目は○なので 改行した上で再び一行抜きたいです。 親切な方教えてください。 ヒントだけでもかまいません。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- watabe007
- ベストアンサー率62% (476/760)
>さらに追加で、2列目の値はjoinさせない(出力させない)としたら >どのようにすれば良いでしょうか? こんな方法も v = Cells(i, 2).Resize(, 4).Value v(1, 1) = Cells(i, 1).Value MsgBox Join(Application.Index(v, 1, 0), ",")
- watabe007
- ベストアンサー率62% (476/760)
>さらに追加で、2列目の値はjoinさせない(出力させない)としたら >どのようにすれば良いでしょうか? v = Cells(i, 3).Resize(, 3).Value MsgBox Cells(i, 1).Value & "," & Join(Application.Index(v, 1, 0), ",")
- watabe007
- ベストアンサー率62% (476/760)
こんにちは、参考に Sub Test() Dim i As Long Dim v As Variant For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, "F").Value = "○" Then v = Cells(i, 1).Resize(, 5).Value MsgBox Join(Application.Index(v, 1, 0), ",") End If Next End Sub
- hige_082
- ベストアンサー率50% (379/747)
よく分かりません 出力先、1、3、5行目が○の時、1、2、3行に出力するのか、1、3、5行に出力するのか Sub test() Dim i As Integer, x As Long Dim strText As String For i = 1 To Range("f65536").End(xlUp).Row If Cells(i, 6).Value = "○" Then For x = 0 To 4 strText = IIf(x = 0, Cells(i, 1).Value, strText & "," & Cells(i, 1).Offset(, x).Value) Next x MsgBox strText End If Next i End Sub 後はご自由に 以上、参考まで
- cistronezk
- ベストアンサー率38% (120/309)
出力先はどこなのでしょう? (1)A-F列を選択し、6列目で降順に並べ替え。これで「○」の行が上に集まる。 (2)G列(7列目)の「○」のある行に以下の式をフィル。 =CONCATENATE(A1,",",B1,",",C1,",",D1,",",E1) (3)もしファイルに保存するなら、G列をコピーしてテキストファイルに貼り付け。 という手作業で十分に思いますが、必要ならこれをマクロ記録して修正してみては。
補足
ありがとうございます!参考になりました! さらに追加で、2列目の値はjoinさせない(出力させない)としたら、どのようにすれば良いでしょうか? v = Cells(i,1).Value & Cells(i,3).Resize(,3),value とすればいけるのかなと思ったのですが、 実行時エラー13と出てきてうまくいきませんでした。