• ベストアンサー

エクセル2003で、色のついているセルを探す

たとえば、A1からA100の中で、色のついたセルがあれば、隣のB1からB100セルに”1”を入れる事が出来ますか?            

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

  • ベストアンサー
  • Bubuca
  • ベストアンサー率59% (532/898)
回答No.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()はとても便利なのですが、将来使えなくなるかもしれないので、ちょっと不安があります。

izune
質問者

お礼

ありがとうございます    うまくできました        たいへんたすかります

その他の回答 (4)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

#02です #01~#03のマクロは標準モジュールシートにペーストします。標準モジュールシートとはALT+F11でVBE画面を開き、「画面左側のシート名を右クリック」→「挿入」→「標準モジュール」を選択したときに表示される画面です。 #01、#02を実行するときはシートの画面に戻りALT+F8でマクロ一覧を表示し、マクロ名を選択して「実行」ボタンです。 #03はユーザ関数ですからシートの任意セルに関数として入力することになります

noname#22222
noname#22222
回答No.3

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)
回答No.2

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

回答No.1

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

izune
質問者

お礼

早速の回答ありがとうございます。 どこのセルにどのように、入力すればよいのでしょうか? よくわかりませんので、そのへんもあわせて宜しくお願いします。