我试图通过在excel VBA中使用两个数组来找到几列中的非匹配
因此代码在“Sammanställning”表中的列A(varr数组)中用作另一个数组arr的Facit(来自其他工作表的列k)以查找非匹配,然后在最后添加非匹配“Sammanställning”表中的A栏。
现在出现问题:
它有效,但只是一种。它执行匹配,找到非匹配将其添加到正确位置的末尾。 但是在第一张表之后,如果它添加了非匹配,则它不会更新varr数组。 我尝试使用下面的3个变体更新阵列,但没有工作。我得到了“out of index”错误。
ReDim Preserve varr(LBound(varr) To (UBound(varr) + 1)) As Variant
ReDim Preserve varr(LBound(varr) To (UBound(varr) + 1))
ReDim Preserve varr(UBound(varr) + 1)
第一部分是因为我没有查看错误的表格,我使用GlobalSheetName。
Sub KollaFlyttaData()
Dim ws As Worksheet
Dim ShName As String
Dim char As Variant
Dim blnChar As Boolean
Dim Sistaraden As Variant
Dim varr As Variant
varr = Sheets("Sammanställning").Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value
For Each ws In ActiveWorkbook.Worksheets
For Each char In Split(GlobalSheetName, ",")
If ws.Name = char Then
blnChar = True
Exit For
Else
blnChar = False
End If
Next
If Not blnChar = True Then
ws.Activate
Dim arr As Variant
arr = Range("K3:K" & Cells(Rows.Count, "K").End(xlUp).Row).Value
Dim x As Variant, y As Variant, match As Boolean
For Each x In arr
match = False
For Each y In varr
If x = y Then match = True
Next y
If Not match Then
Sistaraden = Sheets("Sammanställning").Cells(Rows.Count, "A").End(xlUp).Row + 1
Sheets("Sammanställning").Range("A" & Sistaraden).Value = x
ReDim Preserve varr(LBound(varr) To (UBound(varr) + 1)) As Variant
End If
Next x
End If
Next
End Sub
如何更新varr以便我可以添加所有非匹配项,并在“Sammanställning”表格的A列中的最后一个非空单元格后添加非匹配项。
答案 0 :(得分:0)
您可以使用字典吗?您可以将其与按钮推送或工作表事件(可能是第一个更容易)联系起来,以便更新前进。
到目前为止,我正在避免使用您的代码来获取正确的工作表并简单地演示字典部分:
var BritishZone = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
DateTime dt = DateTime.SpecifyKind(DateTime.UtcNow, DateTimeKind.Unspecified);
DateTimeInBritishLocal = TimeZoneInfo.ConvertTime(dt, TimeZoneInfo.Local, BritishZone);