【发布时间】:2017-08-11 23:45:16
【问题描述】:
我需要在 Excel 函数中将一列字母数字值转换为字符串。 CStr(value) 工作正常,除非该值类似于 123E4。在这种情况下,Excel 将该值视为 1230000 并返回字符串“1230000”。使用 Format(value,"#") 产生相同的结果。我想要的结果是字符串“123E4”。
我怎样才能得到这个?
输入单元格是从网站下载的。他们使用“常规”格式。我将单元格中的值传递给以下函数。
Function Var2Str(varA1 As Variant, Optional strFmt As String = "#") As String
Dim strTry As String
Dim strMsg As String
Debug.Print varA1, VarType(varA1), TypeName(varA1)
strTry = CStr(varA1)
Select Case VarType(varA1)
Case vbDouble
strTry = Format(varA1, strFmt)
Case vbString
'no further action
Case Else
strMsg = "Unhandled VarType in Var2Str" _
& vbCrLf & vbTab & "vara1 = " & varA1 _
& vbCrLf & vbTab & "varType = " _
& VarType(varA1) & vbCrLf & vbTab _
& "TypeName = " & TypeName(varA1)
MsgBox strMsg, vbOKOnly, "Information"
End Select
Var2Str = strTry
Debug.Print Var2Str
结束函数
【问题讨论】:
-
包含输入值的单元格是如何格式化的?
-
将“123E4”格式化为文本,我得到相同的值“123E4”。您可以尝试
format(cell, cell.numberformat),具体取决于您的单元格格式。可能有助于显示您在上下文中使用的实际代码。 -
它们究竟是如何下载到 Excel 中的?下载的文件如何将工作表中的单元格设置为
General格式?您需要将单元格格式设置为文本之前将数据放置在工作表上,或告诉 Excel 将条目视为文本。 -
我将一个数据表导出到一个 .csv 文件,然后运行几个 VBA 程序来分析它。 .csv 文件中的一列包含字母数字值,例如 123876、23XY45、123E4。默认情况下,在 Excel 中打开 .csv 文件时,所有列都具有常规格式。有关我正在使用的确切代码,请参阅我编辑的帖子。
-
无需将单元格重新格式化为 TEXT。请看下面的答案。
标签: excel