Getting data from one sheet to another on the user input
我有一个 Excel 工作簿,在那个工作簿中我有许多工作表。
一张称为 main,另一张称为 data,其中包含所有信息。 data 工作表在同一单元格中包含人员姓名和分配的编号。
例如:A2 将具有:123 Chris Smith
我想要实现的是让用户开始在主表中的任何位置键入数字,它会扫描数据表并完成其余数据。
因此,用户将键入 123,然后宏将填写其余的 123 Chris Smith。
- 通过在触发 WorkSheet_Change 事件时进行搜索,这是可行的。但是,我怀疑这方面的表现可能很差......
-
您是否考虑过使用 AuUtoComplete 数据验证?这是一个可能有帮助的链接。不确定这是否是您想要的,因为它允许"完成"单个单元格,并且不允许将其他值放入其他单元格中,但您可以使用 Lookup 函数来做到这一点。
如前所述,您可以使用 Worksheet_Change() 事件。为了向您展示它是如何工作的,请将此代码放在编辑器的 main 工作表中。现在键入任何与您的数据列表匹配的数字,然后单击单元格外,它现在将完成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Private Sub Worksheet_Change(ByVal Target As Range)
Dim sht As Worksheet
Dim rng As Range
Dim val As Variant: val = Target.Value
Set sht = Worksheets("Data")
If Not IsError(val) And Not IsArray(val) Then
If val <>"" Then
Set rng = sht.Range("A:A").Find(val &"*", LookAt:=xlWhole)
If Not rng Is Nothing Then
Application.EnableEvents = False
Target.Value = rng.Value
Application.EnableEvents = True
End If
End If
End If
End Sub |
- 很抱歉,当我删除单元格时感到很痛苦,我在其中输入了数字出现以下错误"运行时错误 13:类型不匹配"它突出显示了这部分代码 Dim val As String: **val = Target.Value**
-
试试这个版本:)
-
它仍然抛出相同的错误,但只有当我使用删除而不是退格时。谢谢你的帮忙。
-
我发现了导致错误的原因,这是由于我将输入数字的单元格被合并,取消合并单元格会阻止错误发生
-
我现在能够重新创建错误。谢谢你发现它。发生类型不匹配是因为它返回了一个数组,而不是它应该可以正常工作,并且还可以防止一次复制和粘贴多个数据。它可以被编辑来处理数组。
-
谢谢UGP,你今天真的帮助了我。
-
抱歉最后一个问题,我保证,如果我想从上述宏中排除一个单元格,我该怎么做,例如,如果我希望 R1 在其中输入任何数字而不是添加相关数据:
-
这是一个应该对您有所帮助的示例。您可以设置代码应该执行某些操作的范围。如果您的范围不连续,请使用联合。
-
您好,我已经设法使一切正常,但我确实对数字 0 有疑问。如果我有一个编号为 0123 Smith Vehicle ab777 4ed 的人,另一个编号为 672 Jones Vehicle eu123 lpk 的人如果输入 0123,我会期待这个人叫史密斯出现,但它并没有带来琼斯出现的人,因为 123 在车里。他们有办法避免这种情况发生吗?
-
您可以说 Set rng = sht.Range("A:A").Find(val &"*", LookAt:=xlWhole),它会匹配整个字符串,因此您的输入 0123 只会匹配以 0123 * 开头的字符串。但是您需要将单元格设置为文本格式,否则它将删除 0 并且不会匹配。
-
当我添加它时,它会阻止宏工作。对不起,我知道你给了我足够多的时间来帮助我,我很感激。
-
由于某些格式,它可能无法匹配,您是否将您输入的单元格格式化为文本而不是默认值?
-
谢谢,这是格式问题,我将不再打扰您。