[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA:不要な情報を消す方法』(ああ)
再質問となります。
以前、以下の表組を、記号を軸に列見出し名を抽出するコードをいただきました。
使用してみましたところ、不要な情報も抽出されてしましたが、どこをどう変更していいかわかりません。
ご教示のほどお願いします。
A B C D E 1 大阪 横浜 神戸 2 商品1 〇 〇 〇 3 商品2 × 〇 △ 4 商品3 △ × △
↓↓↓このような結果にしたいです。
■商品1
〇:大阪 横浜 神戸
■商品2
〇:横浜
△:神戸
×:大阪
■商品3
△:大阪 神戸
×:横浜
↓↓↓前回このようなコードをいただきました。
Sub main()
'シート[Sheet2]に結果表示
'元表をアクティブにした状態で実行
Dim c As Range, f As Range, fn As Range, d As Variant
Sheets("Sheet2").Activate
Set r = Sheets("Sheet2").Range("A1")
For Each c In Range("F1:I4").SpecialCells(2)
r.Value = "■" & c.Value
Set r = r.Offset(1)
For Each d In Array("〇", "△", "×")
Set f = c.EntireRow.Find(d, , , xlWhole)
If Not f Is Nothing Then
r.Value = d & ":"
Sheets("Sheet2").Cells(r.Row, Columns.Count).End(xlToLeft).Offset(, 1).Value = f.EntireColumn.Cells(1)
Set fn = f
Do
Set f = c.EntireRow.FindNext(f)
If f.Address = fn.Address Then
Exit Do
Else
r.Value = d & ":"
Sheets("Sheet2").Cells(r.Row, Columns.Count).End(xlToLeft).Offset(, 1).Value = f.EntireColumn.Cells(1)
End If
Loop
Set r = r.Offset(1)
End If
Next d
Next c
End Sub
↓↓↓結果このように表示されています。
■大阪
■横浜
■神戸
■商品1
〇: 大阪 横浜 神戸
■〇
〇: 大阪 横浜 神戸
■〇
〇: 大阪 横浜 神戸
■〇
〇: 大阪 横浜 神戸
■商品2
〇: 横浜
△: 神戸
×: 大阪
■×
〇: 横浜
△: 神戸
×: 大阪
■〇
〇: 横浜
△: 神戸
×: 大阪
■△
〇: 横浜
△: 神戸
×: 大阪
■商品3
△: 大阪 神戸
×: 横浜
■△
△: 大阪 神戸
×: 横浜
■×
△: 大阪 神戸
×: 横浜
■△
△: 大阪 神戸
×: 横浜
よろしくお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
試してみましたが、元のmmさんのコード(コードだけ転記するのは失礼。ちゃんと作者名を明記しないと、著作権無視になります)で正しく動きましたよ? 実行結果を、更に変換かけたような結果になっているようですが、「元表をアクティブにした状態で実行」と指示されているのに、なんで結果の方をアクティブにするコードなんて追加したのですか? 指示に逆らってますよ。
(???) 2018/05/18(金) 14:11
以前に投稿した質問なら、HNは変えないでください。
>↓↓↓前回このようなコードをいただきました。
自分で変更して旨くいかなくなったのに、 さも回答者が提示したコードであるかの様な表現はしないでください。
> Sheets("Sheet2").Activate
↓
(正) Sheets("Sheet2").Clear
> For Each c In Range("F1:I4").SpecialCells(2)
↓
(正) For Each c In Range("F:F").SpecialCells(2)
あと、元コードにも変数rの定義が無いようなので、 「Dim r as Range」 も追加するといいと思います。
(半平太) 2018/05/18(金) 14:15
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.