【问题标题】:Extracting Unique Data from Fixed Location从固定位置提取唯一数据
【发布时间】:2016-01-17 22:10:53
【问题描述】:

最近我在 Stack Overflow 上发现了一个非常好的脚本。它工作得非常好,但我想稍微调整一下——尽管我的技能仍然不能让我非常喜欢这种 VBA。到目前为止,我只是在重新编写此代码时失败了。

我的目标是让这个脚本做它做的事情,但是从一个固定的位置 - 所以我不想通过“问题框”选择它,而是复制一个数据范围。例如:A1:A200 并将其粘贴到另一个选项卡中,例如:DATA!A1:A200

你能帮我吗?

还有代码:

Sub ListUniqueValues()

 'lists the unique values found in a user-defined range into a
 'user-defined columnar range

 Dim SearchRng     As Range
 Dim ResultRng     As Range
 Dim Cel          As Range
 Dim iRow          As Long

 Set SearchRng = Application.InputBox("Select search range", _
       "Find Unique Values", Type:=8)
 Do
    Set ResultRng = Application.InputBox("Select results columnar range", _
       "Write Unique Values", Type:=8)
 Loop Until ResultRng.Columns.Count = 1

 iRow = 0
 For Each Cel In SearchRng
    If Application.WorksheetFunction.CountIf(ResultRng, Cel.Value) = 0 Then
       'This value doesn't already exist
       iRow = iRow + 1
       If iRow > ResultRng.Rows.Count Then
         MsgBox "Not enough rows in result range to write all unique values", _
         vbwarning, "Run terminated"
         Exit Sub
       Else
         ResultRng(iRow).Value = Cel.Value
       End If
    End If
 Next Cel

 'sort result range
 'ResultRng.Sort ResultRng

End Sub

【问题讨论】:

    标签: vba excel unique


    【解决方案1】:

    为您的DATA!A1:A200 示例更改

    Set SearchRng = Application.InputBox("Select search range", _
       "Find Unique Values", Type:=8)
    

    Set SearchRange = Sheets("DATA").Range("A1:A200")
    

    编辑

    说了这么多,你见过这个函数吗

    Dim SearchRng As Range, ResultRng As Range
    Set SearchRng = Sheets("DATA").Range("A1:A200")
    Set ResultRng = Sheets("Results").Range("A2")
    SearchRng.AdvancedFilter Action:= xlFilterCopy, CopyToRange:=ResultRng, Unique:=True
    

    【讨论】:

    • 好的,这是一个固定的搜索位置。工作正常。粘贴结果呢?同样的想法,只是将 ResultRange 更改为固定位置?
    • 正确。并删除 Do While 循环。
    • 能否请您将其压缩成完整的代码?谢谢一百万!
    • 好的,明天上班时我会查看所有文件有了它,我越感到失落:-)但我可以看到它的潜力。无论哪种方式,我都会让你们知道进展如何 - 非常感谢!
    • @SzymonSid 通常会出现“错误 91 对象变量或未设置块”,因为在将对象变量设置为等于某值之前未使用关键字 Set。看看这篇文章:stackoverflow.com/questions/5281759/…
    猜你喜欢
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2017-10-08
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    相关资源
    最近更新 更多