列出用户表单excel vba中列中的重复值
Posted
技术标签:
【中文标题】列出用户表单excel vba中列中的重复值【英文标题】:List duplicate values from a column in a userform 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")
。
请注意,可以重复更多用户名,我不希望它们列在列表框中,只列出在原始用户表单中选择的值。
【问题讨论】:
【参考方案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
一开始我把一切都搞得太复杂了。
似乎工作正常,但如果有人有替代解决方案或可以改进我的代码,请发布。
感谢您的宝贵时间。
【讨论】:
以上是关于列出用户表单excel vba中列中的重复值的主要内容,如果未能解决你的问题,请参考以下文章
使用 VBA Excel 浏览文件夹以在 Outlook 邮件中附加文件 [重复]