【发布时间】:2021-08-01 12:39:07
【问题描述】:
已按照一些说明创建用户定义函数以在最新版本的 Excel 中复制 TEXTJOIN 函数。它可以创建一个函数,然后您可以将其用作任何其他函数,将单元格范围的内容输出到单个单元格,以逗号分隔。
这很好用,但是我无法让这个函数接受命名范围而不是单元格范围。这可能吗?
语法如下: =My_Text_Join(“,”,1, name-of-namedrange)
Option Explicit
Function My_Text_Join(delimiter As String, ignore_empty As Boolean, text_range As Range) As String
Application.Volatile
Dim c As Range
Dim n As Long
n = 0
For Each c In text_range
If ignore_empty = True Then
If VBA.IsEmpty(c.Value) = False Then
If n = 0 Then
My_Text_Join = c.Value
Else
My_Text_Join = My_Text_Join & delimiter & c.Value
End If
n = n + 1
End If
Else
If n = 0 Then
My_Text_Join = c.Value
Else
My_Text_Join = My_Text_Join & delimiter & c.Value
End If
n = n + 1
End If
Next
End Function
【问题讨论】:
-
您可能会找到 MS doc。 Refer to Named Ranges 有帮助。
-
我用一个命名的 ranged(命名为
prueba)尝试了你的编码,它工作得很好。我用过=My_Text_Join(";";1;prueba)。你遇到了什么错误?你怎么称呼你的命名范围? -
你的代码没问题。您确定您定义的名称实际上返回了一个范围,并且您正确地传递了它 - 即
name-of-range而不是"name-of-range" -
我现在有这个工作。令人难以置信的是,它就像在分隔线周围使用的引号一样简单。我复制并粘贴了我遵循的示例中的语法,分别是 66 和 99 与直线!
标签: excel vba named-ranges