gpt4 book ai didi

excel - 用于搜索、匹配和粘贴 : Unknown Error 的 VBA 字典

转载 作者:行者123 更新时间:2023-12-03 07:43:01 25 4
gpt4 key购买 nike

好的,所以我从 here 中提取了这段代码,并且一直在尝试适应它,但收效甚微。我可能只是误解了原始版本,或者遗漏了其他一些基本缺陷(比如代码可能是为旧版本的 excel 编写的)。

我有一张主表(2018 年),其中有很多不同的行,分配给检查员的任务不同。每个任务在 G 列中都有一个唯一的编号,一个检查员可以有多个任务——但没有任务有多个检查员。 G 列是唯一的——数字不重复。每个检查员都有自己的工作表,该工作表使用不同的 excel 进行更新——检查员工作表的格式与主工作表完全相同,所有列都相同。检查员将在他们自己的工作表中输入任务完成的日期(日期在 R 列中),我正在尝试使用此代码,以便当检查员完成任务并输入日期时,他单击按钮,该日期将复制到主工作表中与正确任务编号匹配的正确行中的 R 列。

像这样:
copyPaste

我正在使用此代码来解决使用索引匹配或 vlookup 之类的公式(数据太多,并且工作簿旨在供不知道如何在添加新记录时拖下公式的个人使用)。

Sub dates()

Application.ScreenUpdating = False

Dim AVals As New Dictionary
Dim i As Long, j As Long, lastRow1 As Long, lastRow2 As Long
Dim sh_insp, sh_2018 As Worksheet
Dim MyName As String

Set sh_insp = Activesheet
Set sh_2018 = Sheets("2018")

With sh_insp
lastRow1 = .Range("A:A").Rows.Count 'last row in spreadsheet
lastRow1 = .Cells(lastRow1, 7).End(xlUp).Row 'last used row in column G
'load the AVal dict
For j = 18 To lastRow1
MyName = .Cells(j, 7).Value
If Len(MyName) > 0 Then AVals.Add MyName, .Cells(j, 7).Value
Next j
End With

With sh_2018
lastRow2 = .Range("A:A").Rows.Count
lastRow2 = .Cells(lastRow2, 7).End(xlUp).Row 'last used row in column G
For i = 18 To lastRow2
MyName = .Cells(i, 7).Value
If AVals.Exists(MyName) Then
.Cells(i, 18).Value = AVals.Item(MyName)
End If
Next i
End With
Application.ScreenUpdating = True

End Sub

我在 Dim AVals as New Dictionary 收到“未定义用户定义的类型”。这使我无法真正看到它是否有效。此外,有时尚未分配任务,而您已分配但尚未完成的任务。我不希望它删除任何人的数据,仅在匹配任务编号时添加数据。这有意义吗?

最佳答案

替换这一行:

If Len(MyName) > 0 Then AVals.Add MyName, .Cells(j, 7).Value

有了这个:
If Len(MyName) > 0 And Len(.Cells(j, 18)) > 0 Then AVals.Add MyName, .Cells(j, 18).Value

关于excel - 用于搜索、匹配和粘贴 : Unknown Error 的 VBA 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50275802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com