dポイントプレゼントキャンペーン実施中!

A列   B列
---------------
東京  山田
東京  田中
埼玉  佐藤
埼玉  鈴木
神奈川 伊藤
---------------
みたいなシートがあり、「東京」で2行ある「山田」と「田中」を1セルにまとめたいのです。

オートフィルタで東京の人のみ表示させておいて、選択範囲を、
Each xxx in Selection~Nextをつかって処理しようとしましたが、
どうしてか、山田から伊藤まで全行分ループが回ってしまいます。
画面上で見えている選択範囲は正しく、Copyメソッドであれば望みどおりできるのですが。。。
選択範囲を正しくループさせるにはどうしたらよいか、教えて下さい。
よろしくお願いします。

Excelのバージョンは2007、OSはWindows Vistaです。

A 回答 (2件)

可視セルを使えば良いと思います。


下記操作を「マクロの記録」すれば参考コードが得られます。

A列のオートフィルタ範囲を選択
Ctrl+G (ジャンプ)
Alt+S (セルの選択)
Y (可視セル)
Enter (確定)

得られたコードが上手く適用出来ない場合、遠慮なく捕捉質問してください。
    • good
    • 0
この回答へのお礼

できました!

SpecialCellsで選択範囲を可視セルだけにすることで出来るんですね。
大変助かりました。ありがとうございました。

お礼日時:2009/11/03 19:20

こんばんは。



#1さんの指示で間違いありませんし、マクロが出来ている以上、実際のコードを書くまでもないとは思いますが、記録マクロでは解決できない、2点ほど気をつけなくてはならない点があります。

SpecialCells で、Visible セルを選択する、というものには、タイトル(フィールド)行を含めていますから、その次のセルからです。タイトル行を含めないと、エラーを生じることがあります。

選択された範囲は、Range 型ですが、取得した範囲の末尾に、Cells を付けないと、ループすると、Area(複数のセル) になる可能性があります。

例:
Range("A2", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells

この回答への補足

アドバイスありがとうございます。
Each xxx in Selection~Next でループするより、
rng1 = Range("A2", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells
Each xxx in rng1
...
Next
としたほうが安全ってことですよね。

補足日時:2009/11/06 07:02
    • good
    • 0

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