保存/移动文件后VBA ConcatUniq中断

时间:2017-03-02 18:34:49

标签: excel vba excel-vba concatenation distinct-values

我已将ConcatUniq作为我的Excel工作簿的VBE模块实现。

vba模块" ConcatUniq"连接一列中的值和文本,省略任何空白单元格和重复项。这是" ConcatUniq"。

Function ConcatUniq(ByRef rng As Range, ByVal myJoin As String) As String
    Dim r As Range
    Static dic As Object
    If dic Is Nothing Then Set dic = CreateObject("Scripting.Dictionary")
    For Each r In rng
        dic(r.Value) = Empty
    Next
    ConcatUniq = Join$(dic.keys, myJoin)
    dic.RemoveAll
End Function

我使用它来使用分隔符将单个列中的唯一值连接起来。我的数据有空白,该列中的数据根据​​工作簿其他区域中的数据而变化。 ConcatUniq工作得很好,在我保存并移动文件几次后,我去改变连接列中的一些值。此时,使用ConcatUniq的所有实例都导致#VALUE!错误,即使这些实例中的值不变。我尝试在我输入的几个数字上运行一个测试用例并尝试在那里使用ConcatUniq,但这也被打破了。我已经回到电子表格的旧版本,它一再打破我。即使我移动文件,我也需要这个功能,因为我正在创建一个数据收集工具,将不同的用户保存在不同的计算机上。

有没有办法解决这个问题,或者使用可以跨文件位置工作的分隔符(例如带换行符的逗号)来连接唯一值?我不愿意使用数组公式,因为过去那些已经破坏了用户并且很难协调多个用户,他们需要手动输入单元格并按下ctrl shift enter,而且我计划锁定大​​多数用于促进跨用户数据一致性的工作簿。

0 个答案:

没有答案