我正在创建一个UDF,用于生成一个字符串,我可以将其放入HighCharts。因此,基本上,我将两个范围的数据(数字或文本)输入到UDF中,并输出一个字符串或格式化的对,如下所示[[DataX,DataY],[DataX1,DataY1],...]VBA用户定义函数返回奇怪或无结果
事情对第一个范围来说工作得很好,但第二个范围给我垃圾结果。
这里是我的代码:
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:1061)
结果并没有道理给我。第一个数据范围开始一行太低。我得到几个什么都没有值,然后过了一段时间,我开始从第29列表的另一部分获得数据。我猜测它是从第29列的空单元格开始的,但我不知道为什么会这样。
这里有另一条线索可能有助于了解这一点。如果我使用公式= hcp(A2:A61,B2:B61),则公式从A和C获取数据并向下搜索。它在哪里添加额外的列?当我做= hcp(A2:A61,C2:C61)它开始于A和E.当我放入= hcp(A2:A61,D2:D61)时,我得到A和G结果。
当我将其更改为this = hcp(B2:B61,C2:C61)时,会发生同样的事情我得到C和G ...您会看到该模式。
我不明白它是如何乘以2我的第二列?
太谢谢你了!这非常有帮助。完美的作品!明白我的教训。 – Crimpy