我正在从Excel工作表(它们在I和J列中,从代码中可以很明显地看到它们)中查找日期,数字或文本的值。我正在尝试将这些值的格式更改为text,以便对显示的单元格的值进行vlookup。因此,如果我看到2018年7月28日,我想按原样进行vlookup,而不是获得vlookup结果作为数字或日期(大多数时间会自动将其转换为数字)。到目前为止,我已经尝试了以下内容,但效果不佳。
ws3.Range("I2:J" & lastrow1).NumberFormat = "@"
答案 0 :(得分:4)
让我们从一张小桌子开始:
如您所见, H 列中的项目具有不同的格式;日期格式,数字格式和货币格式。
我们的代码是:
Public Function vbaLookup(valu As Variant, rng As Range, icol As Long) As String
Dim FirstRow As Long, LastRow As Long, i As Long
LastRow = rng.Rows.Count
FirstRow = 1
For i = FirstRow To LastRow
If valu = rng(1).Offset(i - 1, 0) Then
vbaLookup = rng(1).Offset(i - 1, icol - 1).Text
Exit Function
End If
Next i
vbaLookup = "xxxx"
End Function
在下面显示的示例中,我们将公式放在 C1 单元格中
=vbaLookup("gamma",G1:I3,2)
我们得到的是:
如您所见,正确的格式会被提取!!
注意:有局限性。...它不会提取下划线或字体颜色或单元格背景颜色,等等。
用户定义的功能(UDF)非常容易安装和使用:
如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
要删除 UDF:
要使用来自Excel的UDF,
=vbaLookup("gamma",G1:I3,2)
要全面了解有关宏的更多信息,请参见:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
,有关UDF的详细信息,请参见:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其正常工作!