Function concat(useThis As Range, Optional delim As String) As String
' this function will concatenate a range of cells and return one string
' useful when you have a rather large range of cells that you need to add up
Dim retVal, dlm As String
retVal = ""
If delim = Null Then
dlm = ""
Else
dlm = delim
End If
For Each cell In useThis
if cstr(cell.value)<>"" and cstr(cell.value)<>" " then
retVal = retVal & cstr(cell.Value) & dlm
end if
Next
If dlm <> "" Then
retVal = Left(retVal, Len(retVal) - Len(dlm))
End If
concat = retVal
End Function
Function concat2(useThis As Range, Optional delim As String) As String
Dim tempValues
Dim tempString
Dim numValues As Long
Dim i As Long, j As Long
tempValues = useThis
numValues = UBound(tempValues) * UBound(tempValues, 2)
ReDim values(1 To numValues)
For i = UBound(tempValues) To LBound(tempValues) Step -1
For j = UBound(tempValues, 2) To LBound(tempValues, 2) Step -1
values(numValues) = tempValues(i, j)
numValues = numValues - 1
Next j
Next i
concat2 = Join(values, delim)
End Function
8 回答
简单---
我创建了一个包含4个单元格的Sheet 2和一个包含一个Formula的单个Cell的Sheet 1:
请注意,按照您的说法尝试,从单个单元格中指定一个值是没有意义的 . 将其发送到使用范围对其执行某项操作的公式 .
好了,我下载了一个自定义连接函数,然后只引用了它的单元格
Code
如果您希望连接不同工作表中的多个单元格,并且还希望在每个单元格的内容之间添加分隔符,则最直接的方法是:
这仅适用于有限数量的引用单元格,但如果您只想要映射的这些单元格很少,则速度很快 .
您可以使用相同的公式,然后复制它以便引用整个范围(一个单元格进入一个单元格)
如果需要连接结果,则需要更长的公式或用户定义的函数(即宏) .
你拥有的公式很好 . 但是,输入后,您需要按Control Shift Enter以将其应用于值范围 . 特别:
选择目标工作表中的值范围 .
在公式面板中输入您想要的公式,例如
=Sheet2!A1:F1
命中控制键输入以将公式应用于范围 .
我重写了Ninja2k提供的代码,因为我不喜欢它通过单元格循环 . 为了将来参考,这里使用数组的版本,它在很多范围内工作速度明显更快,但结果相同:
我不禁想到肯定有更好的方法......
以下是在没有VBA的情况下手动执行此操作的步骤,该VBA仅适用于1d数组并创建静态值而不是保留引用:
更新单元格公式为
=Sheet2!A1:A15
点击F9
删除花括号
{ and }
在
=
符号后面的公式前面放置CONCATENATE(
,在公式末尾放置)
.点击进入 .
如果这些工作表位于同一工作簿中,则一个简单的解决方案是命名范围,并使公式引用命名范围 . 要命名范围,请选择它,右键单击,并为其提供带有工作簿范围的有意义的名称 .
例如
=Sheet1!$A$1:$F$1
可以命名为:theNamedRange
. 那么Sheet2!
上的公式可以在你的公式中引用它,如下所示:=SUM(theNamedRange)
.顺便提一下,从您的问题中不清楚您打算如何使用该范围 . 如果你把你所拥有的东西放在一个公式中(例如,
=SUM(Sheet1!A1:F1)
)就可以了,你只需要在公式中插入那个范围参数 . 如果没有相关公式,Excel不会解析范围引用,因为它不知道您要对其执行什么操作 .在这两种方法中,我发现命名范围约定更容易使用 .
它很简单但不容易发现--- Go here to read more . 它来自官方的微软网站
Step 1 - 单击源表单的单元格或范围(包含要链接的数据)
Step 2 按Ctrl C或转到“主页”选项卡,然后在“剪贴板”组中,单击“复制按钮图像” .
Step 3
Home
选项卡上的剪贴板组Step 4 按Ctrl V,或转到“主页”选项卡,在“剪贴板”组中,单击“粘贴链接按钮” . 默认情况下,粘贴复制的数据时会出现“粘贴选项按钮”图像按钮 .
Step 5 单击“粘贴选项”按钮,然后单击“粘贴链接” .