• ベストアンサー

セルの参照方法を教えて下さい

 エクセルのマクロを使って以下のようなことをしたいのですが 方法がわからずに困っています!  例えば、セルA1からセルJ1の10個のセルに、1から10まで の数字が重複することなくランダムに入っているとします。  このうち、いくつかの数字が赤色(font.color = 3)で表示されて いるとき、セルの並び替え等を行わずに、数字が赤色のセルだけを 数字が大きな順番から参照していく方法をモジュールに書くには どうすればいいでしょうか?  質問の意味が不明な点があれば、補足いたしますので マクロに詳しい方、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんなのはどうでしょうか? 作業シートを使う方法です。 元データをSheet1、作業シートをSheet2とします。 Sub sample() Dim c As Integer Dim r As Integer 'sheet2(作業シート)をクリア Sheets("Sheet2").Cells.Clear 'sheet1のFont.ColorIndex=3(赤)のセルアドレスをSheet2のA列に取得 r = 0 For c = 1 To 10 If Sheet1.Cells(1, c).Font.ColorIndex = 3 Then r = r + 1 Sheets("Sheet2").Cells(r, 1) = Sheets("Sheet1").Name & "!" & Sheets("Sheet1").Cells(1, c).Address(RowAbsolute:=False, ColumnAbsolute:=False) End If Next 'データがなければ終わり If r = 0 Then MsgBox "ありません" Exit Sub End If 'Sheet2のB列にSheet1のA1:J1範囲のFont.ColorIndex=3(赤)のセルの値を表示する計算式を設定 Sheets("Sheet2").Range("B1:B" & r).Formula = "=INDIRECT(A1)" 'Sheet2のB列をキーに降順で並び替え Sheets("Sheet2").Cells.Sort Key1:=Sheets("Sheet2").Range("B1"), Order1:=xlDescending, Header:=xlNo 'sheet2のA列に並び替えた結果のセル番号が入っている '結果を表示 Sheets("Sheet1").Select Dim i As Integer For i = 1 To Sheets("Sheet2").Cells(1, 1).End(xlDown).Row Range(Sheets("Sheet2").Cells(i, 1)).Select MsgBox "Hit Any" Next End Sub

okranta
質問者

お礼

 これで何とか問題を解決できそうです。良いアイデアを頂きました。どうもありがとうございました!

関連するQ&A

専門家に質問してみよう