如何通过VBA查找Excel中是否存在该列
我在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示例
如图所示,如果我再次找到第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循环中的下一列之前,必须检查这两个值