【发布时间】:2014-02-21 22:41:11
【问题描述】:
我正在创建一个 UDF,用于生成可以放入 HighCharts 的字符串。所以基本上,我将两个数据范围(数字或文本)输入到 UDF 中,并输出一个字符串或格式化的对,如下所示 [[ DataX, DataY], [DataX1, DataY1], ...]
在第一个范围内一切正常,但在第二个范围内却给了我垃圾结果。
这是我的代码:
Function HCP(Rng1 As Range, Rng2 As Range) As String
' this function will take columns of data and properly format them for highcharts
Dim Str1, Str2, retVal As String
Dim leng, i, j As Integer
Dim col1, col2, row1, row2 As Long
Dim temp1, temp2 As Range
Str1 = "["
Str2 = "]"
col1 = Rng1.Column
col2 = Rng2.Column
row1 = Rng1.Row
row2 = Rng2.Row
leng = Rng1.Rows.Count
For i = 1 To leng
If i < leng Then
Set temp1 = Rng1.Cells(row1 + i - row1, col1)
Set temp2 = Rng2.Cells(row2 + i - row2, col2)
retVal = retVal & "[" & temp1 & "," & temp2 & "],"
Else
retVal = retVal & "[" & temp1 & "," & temp2 & "]"
End If
Next i
retVal = Str1 & retVal & Str2
HCP = retVal
End Function
我使用这个公式调用函数:=hcp(D2:D61,O2:O61)
结果对我来说没有意义。第一个数据范围的起始行太低。我得到了几个空值,然后过了一会儿,我开始从第 29 列中的工作表的另一部分获取数据。我猜它是从第 29 列中的空单元格开始的,但我不知道为什么会这样。
这里有另一个线索可能有助于深入了解这一点。如果我使用公式 =hcp(A2:A61,B2:B61) ,则该公式将从 A 和 C 向下获取数据。它在哪里添加额外的列?当我执行 =hcp(A2:A61,C2:C61) 时,它从 A 和 E 开始。当我输入 =hcp(A2:A61,D2:D61) 时,我得到 A 和 G 结果。
当我将其更改为 =hcp(B2:B61,C2:C61) 我得到 C 和 G 时,也会发生同样的事情......你看到了模式。
我看不到第二列上它是如何乘以 2 的?
【问题讨论】:
标签: excel vba highcharts user-defined-functions