2016-05-24 4 views
0

アドレスデータを比較しようとしています。私の現在のマクロは、2つの列を比較し、一致しないときに「Dropped Data」を入力します。問題は、これらの値の多数が削除されずに別のセルに統合されていることです。私はVBAのような演算子を使用して欠損値を見つけることができるようにマクロを変更したい。例えば、 "9825 Spectrum Dr Bldg 3"に "Bldg 3"があります。私はこのコードをウェブの周りから見ることができましたが、Range("C65536")がどの範囲を選択しているのかわかりません。ワイルドカードで同様の演算子を使用するVBA

編集:人々が私がしたいことをするように見えるInstr関数を使用することを提案しているのがわかります。私はそれが私のマクロで動作するように/正しいセルを参照するようにする方法を私はよく分かりません。また、私が理解しているところからは、見つかった文字数に等しい値を返します。したがって、私が与えた例では、スペースを含めると6の値を返します。

Sub droppeddata() 

Application.ScreenUpdating = False 

lr = Range("C65536").End(xlUp).Row 
For a = lr To 1 Step -1 
If Not IsEmpty(Cells(a, 13).Value) And IsEmpty(Cells(a, 19)) Then 
Cells(a, 10).Select 
Selection.NumberFormat = "General" 
    ActiveCell.FormulaR1C1 = "N" 
Cells(a, 11).Select 
Selection.NumberFormat = "General" 
    ActiveCell.FormulaR1C1 = "Dropped Data" 
End If 
Next a 

Application.ScreenUpdating = True 
End Sub 
+2

Rangeステートメントは、C65536で始まり上方向にジャンプすることで、C列の最後に使用された行(lr)を探しています。セルの値の中の文字列の部分を探したい場合は、 'InStr'関数を参照する必要があります。 – Dave

+2

セルに特定の文字が含まれているかどうかを確認するには、http:// www。 exceltrick.com/formulas_macros/vba-instr-function/質問が正しく理解されている場合 –

+1

'InStr'は、探しているコンテンツが文字列内にあるかどうかを知る(したがって' InStr'という名前の由来) 。あなたが正しく理解しているかどうかを推測するのではなく、リンクした@Robページを読むか、関数のドキュメントを読むことができます。 –

答えて

1

あなたの現在のマクロは何かを比較しませんが、2つの列が空であるかどうかをチェックするだけです。

あなたは何をしようとすると非常に特定されていないので、このコードは、当て推量のビットで行われます。

Sub droppeddata() 
    Dim lr As Long ' Declare the variable 
    lr = Range("C65536").End(xlUp).Row ' Set the variable 
    ' lr now contains the last used row in column C 

    Application.ScreenUpdating = False 

    For a = lr To 1 Step -1 
     If IsEmpty(Cells(a, 19)) Or InStr(1, Cells(a, 13).Value, Cells(a, 19).Value, vbTextCompare) > 0 Then 
     ' If Cells(a, 19) is empty OR 
     ' Search Cells(a, 13) for the value contained in Cells(a, 19) 
     ' If INSTR returns a match greater than 0, it means the string we're looking for is present 
     ' Enter the loop if either condition is true 

      ' In this section, avoiding SELECT is preferable. Working directly on the ranges is good. 
      With Cells(a, 10) 
       .NumberFormat = "General" 
       .Value = "N" 
      End With 

      With Cells(a, 11) 
       .NumberFormat = "General" 
       .Value = "Dropped Data" 
      End With 
     End If 
    Next a 

    Application.ScreenUpdating = True 
End Sub 

変更あなたの必要性に範囲/セル - 現在私は単にあなたの既存のコードに基づいて推測しました。

関連する問題