如何通过VBA查找Excel中是否存在该列

如何通过VBA查找Excel中是否存在该列,vba,excel,Vba,Excel,我在excel中有两行两个标题,根据这些标题我上传每行的值。如果两个标题的组合已可用,则该行中的值将更新。如果该组合不可用,将创建一个新列 Excel示例 如图所示,如果我再次找到第2列和第B列的组合,我可以根据第2列和第B列更新新行中的值。如果有其他标题组合,如第5列和第B列,则它将创建一个新列 使用VBA,我只能检查一个列标题,但不能检查标题的组合。我使用了下面的代码 Set c=ws.Range("B2",ws.Cells(2,Columns.Count)).Find:=What(d,1

我在excel中有两行两个标题,根据这些标题我上传每行的值。如果两个标题的组合已可用,则该行中的值将更新。如果该组合不可用,将创建一个新列
Excel示例

如图所示,如果我再次找到第2列和第B列的组合,我可以根据第2列和第B列更新新行中的值。如果有其他标题组合,如第5列和第B列,则它将创建一个新列

使用VBA,我只能检查一个列标题,但不能检查标题的组合。我使用了下面的代码

Set c=ws.Range("B2",ws.Cells(2,Columns.Count)).Find:=What(d,1)
IF c is Nothing Then
My code
Else`My Code End If 

Find
不能用于查找分布在多个单元格中的值。我建议使用这种代码

Private Sub FindMatchingColumn()
    ' 24 May 2017

    Dim Caption1, Caption2
    Dim Combination As String
    Dim Captions As String
    Dim C As Long

    Caption1 = "Column A"
    Caption2 = "Column 1"
    Combination = CStr(Caption1) & CStr(Caption2)

    With ActiveSheet
        Do
            C = C + 1
            Captions = CStr(.Cells(1, C).value) & CStr(.Cells(2, C).value)
            If StrComp(Captions, Combination, vbTextCompare) = 0 Then Exit Do
        Loop While Len(Captions)

        If Len(Captions) Then
            MsgBox "Column " & C & " has matching captions"
        Else
            MsgBox "No matching captions were found" & vbCr & _
                   "Write new captions to Column " & C
            .Cells(1, C).value = Caption1
            .Cells(2, C).value = Caption2
        End If
    End With
End Sub
Caption1和Caption2是您要查找的两个列标题。代码的第一部分循环遍历所有列以找到该组合。如果找到它,它会将找到它的列传递给以下代码。如果不是,则传递下一个空白列的编号

第二部分获取该列编号并对其进行操作。如果它是一个使用过的列,您可以在那里添加您的值。如果它是一个新列,它会添加两个标题,然后您可以在其中添加值

此代码假定您知道标题的顺序。如果需要接受A+B或B+A,则在传递到Do循环中的下一列之前,必须检查这两个值