- ベストアンサー
エクセル2003で、色のついているセルを探す
たとえば、A1からA100の中で、色のついたセルがあれば、隣のB1からB100セルに”1”を入れる事が出来ますか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 名前定義とGet.Cellを使ってやれるかもしれません。 「挿入」→「名前」→「定義...」でcolorという名前定義を作成して、参照範囲に =GET.CELL(63,Sheet1!A1)+NOW()*0 と入れます。 B1に =IF(color<>0,1,"") と入れれば、塗りつぶしされたセルがA列にあれば1と表示されます。 これをB100までコピーします。 デフォルトの色(自動)になっている時だけゼロが返ってきますので、これを利用しています。 Get.Cell(数値,範囲)の数値は 24 セルに含まれる先頭文字の色を示す 1 から 56 までの数値。フォントの色が "自動" に設定されているときは 0 が返されます。 63 セルの塗りつぶし (背景) 色を示す 1 から 56 までの数値。色が "自動" に設定されているときは 0 が返されます。 64 セルのパターン (前景) 色を示す 1 から 56 までの数値。色が "自動" に設定されているときは 0 が返されます。 Get.Cell()はとても便利なのですが、将来使えなくなるかもしれないので、ちょっと不安があります。
その他の回答 (4)
- zap35
- ベストアンサー率44% (1383/3079)
#02です #01~#03のマクロは標準モジュールシートにペーストします。標準モジュールシートとはALT+F11でVBE画面を開き、「画面左側のシート名を右クリック」→「挿入」→「標準モジュール」を選択したときに表示される画面です。 #01、#02を実行するときはシートの画面に戻りALT+F8でマクロ一覧を表示し、マクロ名を選択して「実行」ボタンです。 #03はユーザ関数ですからシートの任意セルに関数として入力することになります
b1書式に、=isNotColor(A1)としてズズッとコピー。 標準モジュールに Public Function isNotColor(ByVal R As Range) As String isNotColor = IIf((R.Interior.ColorIndex > 0), "1", "") End Function
- zap35
- ベストアンサー率44% (1383/3079)
Sub Macro2() Dim rng As Range For Each rng In Range("A1:A100") If rng.Interior.ColorIndex <> xlNone Then rng.Offset(0, 1).Value = "1" End If Next End Sub
- himadakarane
- ベストアンサー率35% (27/76)
Sub Macro1() For i = 1 To 100 Step 1 If (Cells(i, 1).Interior.ColorIndex <> xlNone) Then Cells(i, 2) = 1 End If Next i End Sub
お礼
早速の回答ありがとうございます。 どこのセルにどのように、入力すればよいのでしょうか? よくわかりませんので、そのへんもあわせて宜しくお願いします。
お礼
ありがとうございます うまくできました たいへんたすかります