Excel 2011-如何将textJoin的输出从单元格的值更改为单元格名称,以便将其放入Sum()中添加这些值
我使用下面列出的textJoin UDF将不同行中的值合并到一个单元格中;它显示每个值。但是,我想知道我是否可以操纵这个UDF的输出,这样我就可以添加值并获得值的总和,而不是简单地显示值。或者理想情况下,如果我可以修改变量来指示它添加值。有人知道我没有创建的UDF是否可以被指示输出单元格名称A2、B2、C2,如果可以,我可以将该输出放在Sum函数中,以便它将A2+B2+C2相加吗Excel 2011-如何将textJoin的输出从单元格的值更改为单元格名称,以便将其放入Sum()中添加这些值,excel,vba,macos,excel-2011,excel-udf,Excel,Vba,Macos,Excel 2011,Excel Udf,我使用下面列出的textJoin UDF将不同行中的值合并到一个单元格中;它显示每个值。但是,我想知道我是否可以操纵这个UDF的输出,这样我就可以添加值并获得值的总和,而不是简单地显示值。或者理想情况下,如果我可以修改变量来指示它添加值。有人知道我没有创建的UDF是否可以被指示输出单元格名称A2、B2、C2,如果可以,我可以将该输出放在Sum函数中,以便它将A2+B2+C2相加吗 Function TEXTJOIN(delim As String, skipblank As Boolean, a
Function TEXTJOIN(delim As String, skipblank As Boolean, arr)
Dim d As Long
Dim c As Long
Dim arr2()
Dim t As Long, y As Long
t = -1
y = -1
If TypeName(arr) = "Range" Then
arr2 = arr.Value
Else
arr2 = arr
End If
On Error Resume Next
t = UBound(arr2, 2)
y = UBound(arr2, 1)
On Error GoTo 0
If t >= 0 And y >= 0 Then
For c = LBound(arr2, 1) To UBound(arr2, 1)
For d = LBound(arr2, 1) To UBound(arr2, 2)
If arr2(c, d) <> "" Or Not skipblank Then
TEXTJOIN = TEXTJOIN & arr2(c, d) & delim
End If
Next d
Next c
Else
For c = LBound(arr2) To UBound(arr2)
If arr2(c) <> "" Or Not skipblank Then
TEXTJOIN = TEXTJOIN & arr2(c) & delim
End If
Next c
End If
TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
End Function
似乎应该有一种方法将单元格值的输出转换为单元格名称,即C2、C3、C4等,然后将整个内容放在Sum函数中,这样就可以简单地将单元格相加。或者,是否有一个函数将放置在函数中的值作为广告,而不是使用单元格名称
我想添加高亮显示的单元格G2。我有10和20的值。似乎我应该能够使用=SumtextJoin。。。如果我能让textJoin输出单元格名称,即C2、C3
如果您希望它只是合计值,那么您可以将类似这样的内容添加到UDF的末尾
Dim total As Long
Dim txtPart
For Each txtPart In Split(TEXTJOIN, delim)
total = total + CLng(txtPart)
Next txtPart
TEXTJOIN = total
范例
Function TEXTJOIN(delim As String, skipblank As Boolean, arr)
Dim d As Long
Dim c As Long
Dim arr2()
Dim t As Long, y As Long
t = -1
y = -1
If TypeName(arr) = "Range" Then
arr2 = arr.Value
Else
arr2 = arr
End If
On Error Resume Next
t = UBound(arr2, 2)
y = UBound(arr2, 1)
On Error GoTo 0
If t >= 0 And y >= 0 Then
For c = LBound(arr2, 1) To UBound(arr2, 1)
For d = LBound(arr2, 1) To UBound(arr2, 2)
If arr2(c, d) <> "" Or Not skipblank Then
TEXTJOIN = TEXTJOIN & arr2(c, d) & delim
End If
Next d
Next c
Else
For c = LBound(arr2) To UBound(arr2)
If arr2(c) <> "" Or Not skipblank Then
TEXTJOIN = TEXTJOIN & arr2(c) & delim
End If
Next c
End If
TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
'add the below loop to add each number together
Dim total As Long
Dim txtPart
For Each txtPart In Split(TEXTJOIN, delim)
total = total + CLng(txtPart)
Next txtPart
TEXTJOIN = total
End Function
如何编辑代码以使输出显示百分之一百的数字。例如,现在它四舍五入到最接近的整数,即20.55+10.22=31.000。我想把它四舍五入到最接近的百分之一,即30.77。也许我应该问这个问题?他们是。我尝试了数字、货币和会计,并将小数移到了上面。我想我必须调整代码,把它放到第一百位。它有这个信息是因为它的四舍五入正确。我认为这与此有关。我正在试图找出如何将小数输出到百分之一百。@Devil07将CLng替换为CDbl以将其转换为双精度,但请注意,如果值为10.000,Excel将删除小数,如果单元格的数字格式未设置为显示后面的小数位,则将删除零。我尝试了CDbl和CCur,但两者似乎都没有改变输出。我将以问题的形式发布,这样我可以显示屏幕截图。