こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

 エクセルのマクロを使って以下のようなことをしたいのですが
方法がわからずに困っています!

 例えば、セルA1からセルJ1の10個のセルに、1から10まで
の数字が重複することなくランダムに入っているとします。
 このうち、いくつかの数字が赤色(font.color = 3)で表示されて
いるとき、セルの並び替え等を行わずに、数字が赤色のセルだけを
数字が大きな順番から参照していく方法をモジュールに書くには
どうすればいいでしょうか?

 質問の意味が不明な点があれば、補足いたしますので
マクロに詳しい方、よろしくお願いします。

投稿日時 - 2008-05-11 01:49:52

QNo.4013190

すぐに回答ほしいです

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

こんなのはどうでしょうか?

作業シートを使う方法です。
元データを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

投稿日時 - 2008-05-11 08:42:59

お礼

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

投稿日時 - 2008-05-11 16:16:56

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問