【问题标题】:List duplicate values from a column in a userform excel vba列出用户表单excel vba中列中的重复值
【发布时间】:2021-06-11 12:23:24
【问题描述】:

我想让这个公式在列表框中显示唯一的电子邮件。

=IF(COUNTIF($F$2:$F$400, $F321)>1, G321, "")

在用户表单中,名称会在初始化时加载到 label1 或 textbox1 中,这样效果最好。 Listbox1 将显示来自 label1 或 textbox1 重复值的唯一电子邮件。 用户可以从 listbox1 中为重复名称选择正确的电子邮件,然后单击一个按钮,在不同的工作表上输入名称和所选电子邮件。

范围:打开一个用户表单,在 sheet10.range("F2:F400") 的组合框中输入名称。 如果该名称重复,它将打开另一个用户表单来为该名称选择正确的电子邮件。

因此,如果比尔·盖茨的名字不止一次出现在 F2:F400 中,比尔·盖茨将被加载到 label1 或 textbox1 中,并且 listbox1 将列出该名称的所有唯一电子邮件。

Column F = (321) Bill Gates (322) Bill Gates (323) Bill Gates.

Column G = (321) a@email.com (322) b@email.com (323) c@email.com.

用户表单会将“Bill Gates”加载到 label1 或 textbox1 中,并且 G 列中的所有电子邮件将填充 listbox1 并且可以选择一个。当按下“使用选定的”按钮时,它将获取名称并将其复制到Sheet1.Range("D10"),并将选定的电子邮件复制到Sheet1.Range("D11")

请注意,可以重复更多用户名,我不希望它们列在列表框中,只列出在原始用户表单中选择的值。

【问题讨论】:

    标签: excel vba duplicates listbox userform


    【解决方案1】:

    在玩了一段时间之后,我想出了这个;

    Dim r As Excel.Range
    Dim c As Excel.Range
    
    Set r = Sheets("EMAIL").Range("F2:F400")
    
    For Each c In r.Cells
        If c = TextBox1.Value Then ListBox1.AddItem c.Offset(, 1)
            
    Next c
    

    一开始我把一切都搞得太复杂了。

    似乎工作正常,但如果有人有替代解决方案或可以改进我的代码,请发布。

    感谢您的宝贵时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 2017-12-12
      • 1970-01-01
      • 2022-06-20
      • 1970-01-01
      • 2022-10-15
      相关资源
      最近更新 更多