
No.4ベストアンサー
- 回答日時:
コード、ありがとうございます。
If Not WorksheetFunction.CountIf も
If .Cells(1, i).Value <> Sheets("Sheet1").Range("H4", Cells(4, lastColBU)).Find(What:=.Cells(1, i).Value, LookAt:=xlWhole).Row Then Cells(1, i).Font.ColorIndex = 3
も
If Not WorksheetFunction.CountIf(Sheets("Sheet1").Range("H4", Cells(lastColBU, "H")) このCellsにはシートを明示します。
こんな感じIf Not WorksheetFunction.CountIf(Sheets("Sheet1").Range("H4", Sheets("Sheet1").Cells(lastColBU, "H")), .Cells(1, i).Value) > 0 Then
下記のIf .Cells(1, i).Value <> Sheets("Sheet1").Range("H4", Cells(4, lastColBU)).Find(What:=.Cells(1, i).Value, LookAt:=xlWhole).Row Then Cells(1, i).Font.ColorIndex = 3
Findに関しては、 あるかどうかを確かめる場合
If Range(Sheets("Sheet1").Range("H4"), Sheets("Sheet1").Cells(4, lastColBU)).Find(.Cells(1, i).Value, LookAt:=xlWhole) Is Nothing Then .Cells(1, i).Font.ColorIndex = 3
こんな感じです
#3のサンプル(For Eachの場合)
Option Explicit
Sub sample()
Dim r As Range, trgRange As Range
Dim lastColBU As Long: lastColBU = Sheets(1).Cells(4, Columns.Count).End(xlToLeft).Column
Dim lastColLO As Long: lastColLO = Sheets(2).Cells(1, Columns.Count).End(xlToLeft).Column
Set trgRange = Range(Sheets(1).Cells(4, 8), Sheets(1).Cells(4, lastColBU))
With Sheets(2)
For Each r In Range(.Cells(1, 2), .Cells(1, lastColLO))
If WorksheetFunction.CountIf(trgRange, r.Value) = 0 Then r.Font.ColorIndex = 3
Next
End With
End Sub
No.3
- 回答日時:
VBAの場合、行き詰っているところまでのコードを示したり、
試してダメな事を具体的に掲示するようにした方が、あなたの為にも良い事だと思います。
考えて作ったコードを否定したり非難されているように読める回答、アドバイスもあるかも知れませんが
そんな事は、気にする必要はありません。文章だときつく感じる事もありますが、
おそらく的を得たアドバイスでしょう。どんな天才、秀才でも初めはありますし、知らないから質問しているのですから
出来るだけコードを示し、やりたい事、不具合などを加えましょう。
本題
値があるか無いかを判断するだけなら、WorksheetFunction.CountIf で良いと思います。
>Sheet1に存在しない
なので、Sheet2の設定範囲をFOR~NEXTで繰り返し、Sheet1の設定範囲に値がなければ
.Font.Color = RGB(255,0,0)や.Font.ColorIndex = 3 でフォント色を設定すればOK
FOR~NEXTに関しては、For Each Range変数 In Range範囲 が良いと思います。
範囲は例えば、Sheets(2).Range(Cells(1, 2), Cells(1, 最終列))
最終列に関しては、例:シートインデックス2の1行目最終行番号
Sheets(2).Cells(1, Columns.Count).End(xlToLeft).Column で取得できます。
WorksheetFunction.CountIfは、条件で
If Not WorksheetFunction.CountIf(シート1の範囲, Range変数.Value) > 0 Then ’Notをなくし=0でも同じ(無いと言う意味)
For内 をRange変数で取得していれば、
Range変数.Font.ColorIndex = 3 '.Font.Color = RGB(255, 0, 0) で色の付け処理
10行前後のプロシージャなので、上手く組み立ててくださいね。
VBA初心者で申し訳ございません。
今、下記のように実施しようとしていました。
lastColLOはSheet2の最終列
lastColBUはSheet1の最終列がそれぞれ格納されています。
With Sheets("Sheet2")
For i = 2 To lastColLO
If .Cells(1, i).Value <> Sheets("Sheet1").Range("H4", Cells(4, lastColBU)).Find(What:=.Cells(1, i).Value, LookAt:=xlWhole).Row Then Cells(1, i).Font.ColorIndex = 3
Next
End With
WorksheetFunction.CountIfは使ったことないので調べながら試してみます。
No.2
- 回答日時:
見つからなかったと言う事でFindメソッドを使うのはどうなのかな?
通常見つかった場合にそのセルに対して何かをしたいって時に使うと私は思ってます。
単にSheet1に存在するかしないかだけならCOUNTIF関数でも良いのではないかと。
あとは完全一致かあいまい検索かにもよるでしょうけど。
VBA初心者で申し訳ございません。
今、下記のように実施しようとしていました。
lastColLOはSheet2の最終列
lastColBUはSheet1の最終列がそれぞれ格納されています。
With Sheets("Sheet2")
For i = 2 To lastColLO
If .Cells(1, i).Value <> Sheets("Sheet1").Range("H4", Cells(4, lastColBU)).Find(What:=.Cells(1, i).Value, LookAt:=xlWhole).Row Then Cells(1, i).Font.ColorIndex = 3
Next
End With
No.1
- 回答日時:
まず、どこまでできてんの?
VBA初心者で申し訳ございません。
今、下記のように実施しようとしていました。
lastColLOはSheet2の最終列
lastColBUはSheet1の最終列がそれぞれ格納されています。
With Sheets("Sheet2")
For i = 2 To lastColLO
If .Cells(1, i).Value <> Sheets("Sheet1").Range("H4", Cells(4, lastColBU)).Find(What:=.Cells(1, i).Value, LookAt:=xlWhole).Row Then Cells(1, i).Font.ColorIndex = 3
Next
End With
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- 計算機科学 Excel ある行と列が交わったところにマークを付けるには 7 2023/01/24 08:46
- Excel(エクセル) エクセルで文字の少し変わった計を取りたい 6 2023/05/30 23:19
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つ困っています
-
EXCElで特定の文字列の行をコピー
-
【マクロ】並び替えの範囲が、...
-
マクロの修正をお願いします
-
Excelで並び替え後にア行...
-
入力したデータのエラーチェッ...
-
エクセル関数について
-
複数のエクセルファイルのB列か...
-
特定の文字が無い場合、赤文字...
-
excel VBA のコードを編集したい
-
average関数の範囲指定について
-
矩形範囲の複数列を縦1列に並...
-
エクセルのマクロで別のシート...
-
Excel2007 オートフィルター上...
-
【Excel】指定した文字列の行を...
-
エクセルで、ある列の共通する...
-
Excel VBAについて
-
空白セルを非表示に
-
エクセル条件付書式で指定の時...
-
Excel:セルの移動をVBAで行い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
【マクロ】並び替えの範囲が、...
-
Excelで並び替え後にア行...
-
エクセルで行の高さ及び列幅の...
-
【Excel VBA】指定した行の最大...
-
オートフィルタ後のデータから...
-
エクセルの時刻のカウントが出...
-
基準日以前のデータを範囲を指...
-
エクセル関数について
-
EXCELで日付を比べ3か月以内の...
-
文字列を比較し、相違するフォ...
-
急ぎ!色のついたセルを非表示...
-
プルダウンに【なし、平均、デ...
-
excel / ピポッド 日数を出したい
-
マクロで行の高さを設定したい
-
VBA 複数行の検索及び抽出
-
エクセル VBA 行間隔を飛ばした...
-
【Excel】数式の参照範囲を可変...
-
時間の重複チェック
-
EXCEL 最終行のデータを他のセ...
おすすめ情報
変更してみたのですがエラーでした。
何か間違っているでしょうか?
With Sheets("Sheet2")
For i = 2 To lastColLO
If Not WorksheetFunction.CountIf(Sheets("Sheet1").Range("H4", Cells(lastColBU, "H")), .Cells(1, i).Value) > 0 Then
.Cells(1, i).Font.ColorIndex = 3
End If
Next
End With