2013-01-23 151 views
0

我有一個看起來像這樣的Excel文件:搜索Excel列字符串

Col A Col B Col C 
------ ----- ------- 
ABC  3600 Title 1 
DEF  3601 Title 2 
ABC  3603 Title 3 
GHI  3603 Title 4 
ABC  3602 Title 5 
JKL  3604 Title 6 

我必須這樣說:如果列A是「ABC」和列B不是(3601,3602,3603,3700),然後在D列(空列)中輸入'1'。

我到底該如何把它放在VBA中?

+0

我試圖每次迭代:如果ABC和3601;如果ABC和3602;如果ABC和3602等,我一直希望盡我所能去做。 –

+0

如果我正確理解您的問題,可以使用內置公式無需藉助VBA即可完成此任務。 – chuff

+0

這是一個更大的宏的一部分,我只是試圖在VBA中找到一個'光鮮'的方式來做到這一點。不過,我明白你在說什麼。 –

回答

3

你需要VBA嗎?

公式將是:

=IF(A1="ABC";IF(OR(B1=3601;B1=3602;B1=3603;B1=3700);"";1);"") 

有錯誤(細胞移位)在下面的照片時,上述公式是正確的。

enter image description here

VBA:

Function CellCombination(Cell1 As Range, Cell2 As Range) As String 
    CellCombination = "" 
    If Cell1.Value = "ABC" Then 
     Select Case Cell2.Value 
     Case 3601 To 3603, 3700 
     Case Else 
      CellCombination = "1" 
     End Select 
    End If 
End Function 

電子表格使用的一個示例:http://www.bumpclub.ee/~jyri_r/Excel/CellCombinations.xls

+0

試過'公式',它只給了我每個記錄的FALSE。當我嘗試VBA時,它運行時沒有錯誤,但什麼都不做。 –

+0

在函數的開始處,您將返回值,因此它甚至不會到達If語句。您應該爲其他情況添加一個「退出函數」,並將第一行移到底部函數上方的底部。 – aevanko

+0

在函數的開始處,該值被設置爲'「」':只有在檢測到「ABC」時,我們才需要輸出。如果不是,執行直接跳轉到'End Function'。不需要'退出功能'。 –