[[20220106161049]] 『一行分はできたけれど、B列のデーターが入っていax(もっち) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『一行分はできたけれど、B列のデーターが入っているところまで自動的にできますか?』(もっち)

   If Range("B3").Value = Range("a3").Value Then
        Range("c3").Value = "OK"
        Range("c3").Font.ColorIndex = 46

   Else

       Range("c3").Value = "NG"
       Range("c3").Interior.ColorIndex = 41

   End If

End Sub

 B3からB列のデータが入っている行まで同じことを繰り返したいのですが、
うまくいきません。

一行づつしていくしかないのでしょうか?

< 使用 Excel:Excel2007、使用 OS:Windows7 >


B列のデータが入っている行の行数を求め、for文等でループ処理を行えばよいのでは。
(mrkrs) 2022/01/06(木) 16:26

一行づつしていくしかない ですね。
ただし、コードを全行書くわけではなく、
繰り返し構文を使えばよいと思います。

・最初にEndプロパティを使って、データのある最終行を求めておいて(*)
・For .. Next で3行目から最終行までを繰り返します。

(*)慣れていても使えない人もいる(私のことだが)ので、念のため書くと、
  Cells(Rows.Count,"B").End(xlUp).Row でB列のデータがある最終行が求まります。

(γ) 2022/01/06(木) 16:33


こういうアプローチでも解決できそうですね。参考になれば。
    Sub 別案()
        Dim 最終行 As Long
        Stop 'ブレークポイントの代わり

        最終行 = Cells(Rows.Count, "B").End(xlUp).Row
        If 最終行 > 2 Then
            With Range("C3:C" & 最終行)
                .Formula = "=IF(A3=B3,""OK"",""NG"")"
                .FormatConditions.Add(Type:=xlExpression, Formula1:="=C3=""OK""").Font.ColorIndex = 46
                .FormatConditions.Add(Type:=xlExpression, Formula1:="=C3=""NG""").Interior.ColorIndex = 41
            End With
        End If
    End Sub

(もこな2) 2022/01/06(木) 17:06


OKだけNGだけの2回で可能です。
  Sub test()
    On Error Resume Next    'SpecialCellsで範囲を求めているので該当無し対応
    With Range("B3", Cells(Rows.Count, "B").End(xlUp)).Offset(, 1)

        'OKのみ
        .Value = Application.Evaluate("if(" & .Offset(, -2).Address & "=" & .Offset(, -1).Address & ",""OK"","""")")
        .SpecialCells(xlCellTypeConstants).Interior.ColorIndex = 46

        'NGのみ
        With .SpecialCells(xlCellTypeBlanks)
            .Value = "NG"
            .Interior.ColorIndex = 41
        End With
    End With
  End Sub

(tokumei) 2022/01/06(木) 19:28


繰り返し処理の構文はこんな感じです
   For k = 3 To 最終行
        ここに繰り返す処理を記述
   Next

 Sub test()
    Dim k As Long

    For k = 3 To Cells(Rows.Count, "B").End(xlUp).Row
        If Cells(k, "B").Value = Cells(k, "A").Value Then
            Cells(k, "C").Value = "OK"
            Cells(k, "C").Font.ColorIndex = 46
        Else
            Cells(k, "C").Value = "NG"
            Cells(k, "C").Interior.ColorIndex = 41
        End If
   Next

 End Sub

(マナ) 2022/01/06(木) 20:20


いろいろな方法を教えていただきありがとうございました。無事できました。

(もっち) 2022/01/09(日) 20:48


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.