【问题标题】:How to autocomplete a line with data suggestion?如何使用数据建议自动完成一行?
【发布时间】:2016-10-16 21:08:50
【问题描述】:

背景:
在我公司,一些助理填写了一个 Excel 表格,这是一个用户列表(名字、姓氏、身份证号)。之后,我将此列表与 PowerShell 脚本一起使用。但很多时候用户列表没有正确完成。例如,助手忘记输入 ID 号...。
所以我希望帮助助手用数据建议/自动完成填写此 Excel。

技术:
在“数据”表中,我有所有可能的数据(名字、姓氏、身份证号)。 使用我创建的“名称管理器”:

  • d_FirstName 选择第一个单元格
  • c_FirstName 选择所有列,
  • l_FirstName 申请功能:=OFSSET(d_FirstName;0;0;COUNTA(c_FirstName)-1;1)

在“表单”表中,我创建了具有功能的下拉列表:=IF(A1<>"";OFSSET(d_FirstName;MATCH(A1&"*";l_FirstName;0)-1;;SUMPRODUCT((MID(l_FirstName;1;LEN(A1))=TEXT(A1;"0"))*1));l_FirstName) 因此,当用户键入一个字母时,下拉列表“建议”一个正确的名字。

问题:
如果用户只输入 First Name ,如何调整最后一个查询,以完成一个 line 与 First Name 和 Last name 和 ID 号对应?
例如:
如果用户在下拉列表中选择 First Name,Excel 将完成与 Last name 和 ID number 对应的行。
如果用户在下拉列表中选择身份证号,Excel会完成与姓氏和名字对应的行。

第二次,如何在用户输入一个字母时自动显示下拉列表?

谢谢

【问题讨论】:

  • 你的意思是 line,比如 in row,而不是 lign?
  • 在我的示例中,我使用员工 ID 进行登录。您可以轻松地将其更改为名字。我会使用员工的 ID,因为它是唯一的,但如果您想使用姓名,则必须将名字和姓氏连接起来,并可能添加中间名首字母或数字来识别具有相同名字和姓氏的员工。跨度>
  • 在我对is it possible to use autofilter or find on a dictionary? 的回答中,我向您展示了如何使用字典过滤列表。

标签: vba excel


【解决方案1】:

您可以使用组合框的属性和更改事件来完成此操作。组合框将采用 1 或 2 维命名范围或返回范围的公式,因为它是 RowSource。在这里,我将文本列设置为第 3 列。


Private Sub cboEmpID_Change()
    With cboEmpID
        If Not IsNull(.Value) Then
            lblEmployee.Caption = .List(.ListIndex, 1) & ", " & .List(.ListIndex, 0)
        End If
    End With
End Sub

Private Sub UserForm_Initialize()
    Dim ColumnWidths As String

    With Worksheets("Sheet1")
        ColumnWidths = .Columns(1).Width & ";" & .Columns(2).Width & ";" & .Columns(3).Width
    End With

    With cboEmpID
        .ColumnHeads = True
        .ColumnCount = 3
        .ColumnWidths = ColumnWidths
        .TextColumn = 3
        .ListWidth = Range("Sheet1!A:C").Width
        .RowSource = "OFFSET(Sheet1!$A$1,1,0,COUNTA(Sheet1!$A:$A)-1,3)"
    End With
End Sub

【讨论】:

  • 好的,我会尝试实现你的代码。如果你有一个 xlsm 文件来测试你的代码,我很感兴趣。在组合框中,可以搜索 LastName OR FirstName OR ID ? (而不仅仅是 ID)
  • 我给你做了一个测试存根:Download Login.xlsm
  • 非常感谢,我分析了一些可能性,我认为你的建议是最好的。我根据我的需要定制你的代码。例如,我添加了一个“添加”按钮以在 A5 单元格上写入所选项目的值,但我有一些错误:) 如果你想帮助我,欢迎 Download my Excel Macro
  • 添加按钮有效!!! Version 3。下一步:当用户点击“添加”几次时,如何在下一行写?
  • 再次感谢您:) Final Version 我理解您的代码,我将继续改进代码(当用户单击“添加”时清除选定的组合框值;检查重复条目;提高组合框列表的可见性; ...)谢谢你的帮助^^
【解决方案2】:

您需要制作一个级联依赖 Excel 下拉列表。See

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2020-09-28
    • 2019-05-01
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多