2016-03-24 24 views
1

マクロを有効にするのは初めてです。これは3つの入力列を持つ私のExcelテーブルであり、最後の列は必要な結果を持つ出力列です。ここでexcelマクロで "contains"関数を使用する方法

Excel Input and Output data

私が持っているサンプルマクロです:

Function month(x As string, y As string, z As String) As String 

If (((x = "January.Winter") Or (y = "January.Winter")) And (z = "jan")) Then 
    month= "true" 

Else If (((x = "January.2016") Or (y = "January.2016")) And (z = "jan")) Then 
    month= "true" 

Else If (((x = "January.today") Or (y = "January.today")) And (z = "jan")) Then 
    month= "true"  

Else 
    month= False 
End If 
End Function 

私のExcelは、セル内のテキストとしてストリングとして「1月」が含まれる行の数千人が含まれています。 "if" x = January.winter ""のような複数のチェックを書くのではなく、文字列 "x"または文字列 "y"に文字列 "January"が含まれているかどうかを確認してマクロを簡略化します。マクロを変更する方法はありますか?

ありがとうございました。心に春

答えて

3

3つの方法:

If LCase$(x) Like "january*" Or LCase$(y) Like "january*" Then 
    ... 


If InStr(LCase$(x), "january") Or InStr(LCase$(x), "january") Then 
    ... 


If LCase$(Left$(x, 7)) = "january" Or LCase$(Left$(y, 7)) = "january" Then 
    ... 

それは本当にちょうどあなたが取得したい方法を本発明によって決まります。


Iを小文字とcapitilisationですべての問題を防ぐために、テキストを強制的にLCase$()を使用しました。注 - 常に文字列を比較するときを考える価値のあるもの。

+0

ありがとうございました!魅力のように働く。 – MemoryError

1

InStr関数を使用できます。使用例:

If (InStr(x,"January") > 0 Or InStr(y,"January")>0) And (z = "Jan") Then 
... 

部分文字列が見つからない場合は0を返し、そうでない場合は部分文字列の位置を返します。また

詳細情報here

上下の筐体には注意してください。 "1月"は "1月"と一致しません。 LCaseとUCase関数を使用して、Macro Manが答えたように、上部または下部ケーシングを強制します。

関連する問題