[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.