过去几天我一直试图弄清楚这个错误而没有运气。我希望你们中的一个能够提供帮助。我得到“在错误数据类型的公式中使用的值。
快速解释: 将此类函数转换为相应的文本(20054/18393)* 100.0 5位数字是引用问题的字段ID。
ID问题 20054你一年工作多少天 18393你每年度假多少天
我想要达到的结果是(你一年工作多少天/一年度假多少天)* 100.0 如果只是一只手就可以轻松完成。我有超过2600个需要转换的公式。 我在下面创建了这个函数,导致标题中提到的错误。非常感谢任何帮助
这是我的功能
Function Test(sInput As String) As String
Dim i As Long
Dim num As String
Dim Text, a, str, shortname As String
For i = 1 To Len(sInput)
a = Mid(sInput, i, 1)
If IsNumeric(a) Then
num = num & a
Text = ""
Else
If a = "." Then
num = num & a
Else
'search for num value in second sheet short name
shortname = WorksheetFunction.VLookup(WorksheetFunction.Int(num), Worksheets("questionlist").Range("A3:F2537"), 5, False)
num = ""
End If
Text = shortname & a
shortname = ""
End If
str = str & Text
Next
Test = str
End Function
答案 0 :(得分:0)
引发错误的原因是您在行
中将空白值传递给INT Function
WorksheetFunction.VLookup(WorksheetFunction.Int(num), Worksheets("questionlist").Range("A3:F2537"), 5, False)
要在任何单元格中重现错误类型=INT("")
修复此句柄空白值
更新的答案:
Function Formula2Text(ByRef myCell As Range) As String
Dim QuestionId As Integer
Dim strInput As String
'Get Formula instead of values
strInput = myCell.FormulaR1C1
'Use Regex to Catch all ID's
Set Regex = CreateObject("VBScript.RegExp")
Set rnglookup = Worksheets("questionlist").Range("A3:F2537")
Regex.Global = True
Regex.Pattern = "\d+"
For Each Match In Regex.Execute(strInput)
'Skip if the ID is 100
If (Match.Value <> 100) Then QuestionId = Match.Value
'Lookup ID in the rnglookup,Make sure the Ids are sorted in asc in the questionlist sheet
Qntxt = Application.VLookup(QuestionId, rnglookup, 5, False)
If IsError(Qntxt) Then Qntxt = "Missing Lookup"
'Replace the ID with the lookup
strInput = Replace(strInput, QuestionId, Qntxt)
Next
Formula2Text = strInput
End Function
用法:在公式旁边的单元格中,通过引用公式
来使用该函数 =Formula2Text(A1)