2016-03-24 29 views
1

Ben excel macro'nun yeni. Bu, 3 giriş sütunlu bir excel tablosudur ve son sütun, ihtiyacım olan sonuca sahip çıktı sütundur.excel makrosu içinde "içerir" işlevi nasıl kullanılır?

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 

My Excel hücrelerinde bir metin olarak bir alt dize olarak "Ocak" içeren satırları binlerce içerir: Burada

Excel Input and Output data

Ben örnek makro olduğunu. "If" x = January.winter "" gibi çoklu kontroller yazmak yerine, "x" veya "y" dizgisinin "Ocak" dizesini içerip içermediğini kontrol ederek makroyu sadeleştirmek istiyorum. Bunu yapmak için makroyu değiştirmenin bir yolu var mı?

Teşekkürler. akla

cevap

3

üç yolu vardır:

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 
    ... 

Gerçekten sadece almak istiyorum nasıl yaratıcı bağlıdır. Ben küçük harfe ve capitilisation sorunların önlenmesine metin zorlamak için LCase$() kullandım


Not - dizeleri karşılaştırırken düşünmeye değer her zaman bir şeyler.

+0

Teşekkür ederiz! ÇALIŞIYOR bir cazibe gibi. – MemoryError

1

InStr işlevini kullanabilirsiniz. Örnek kullanım:

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

Alt diziniz bulunamazsa 0 değerini döndürür, aksi takdirde alt dizenizin konumunu döndürür. bilgi

üst ve alt kasa ile aynı dikkatli here

Daha. "Ocak", "ocak" ile eşleşmeyecek. Makro Adam'ın cevabında yaptığı gibi, üst veya alt gövdeyi zorlamak için LCase ve UCase işlevlerini kullanın.

İlgili konular