アプリ版:「スタンプのみでお礼する」機能のリリースについて

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行目は○なので
改行した上で再び一行抜きたいです。

親切な方教えてください。
ヒントだけでもかまいません。
よろしくお願いします。

A 回答 (5件)

>さらに追加で、2列目の値はjoinさせない(出力させない)としたら


>どのようにすれば良いでしょうか?
こんな方法も
v = Cells(i, 2).Resize(, 4).Value
v(1, 1) = Cells(i, 1).Value
MsgBox Join(Application.Index(v, 1, 0), ",")
    • good
    • 0

>さらに追加で、2列目の値はjoinさせない(出力させない)としたら


>どのようにすれば良いでしょうか?
v = Cells(i, 3).Resize(, 3).Value
MsgBox Cells(i, 1).Value & "," & Join(Application.Index(v, 1, 0), ",")
    • good
    • 0

こんにちは、参考に


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

この回答への補足

ありがとうございます!参考になりました!

さらに追加で、2列目の値はjoinさせない(出力させない)としたら、どのようにすれば良いでしょうか?
v = Cells(i,1).Value & Cells(i,3).Resize(,3),value
とすればいけるのかなと思ったのですが、
実行時エラー13と出てきてうまくいきませんでした。

補足日時:2009/10/26 01:40
    • good
    • 0

よく分かりません


出力先、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

後はご自由に
以上、参考まで
    • good
    • 0

出力先はどこなのでしょう?



(1)A-F列を選択し、6列目で降順に並べ替え。これで「○」の行が上に集まる。
(2)G列(7列目)の「○」のある行に以下の式をフィル。
=CONCATENATE(A1,",",B1,",",C1,",",D1,",",E1)
(3)もしファイルに保存するなら、G列をコピーしてテキストファイルに貼り付け。

という手作業で十分に思いますが、必要ならこれをマクロ記録して修正してみては。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!