以文本格式更改所有vlookup格式

时间:2018-07-11 18:43:36

标签: vba excel-vba

我正在从Excel工作表(它们在I和J列中,从代码中可以很明显地看到它们)中查找日期,数字或文本的值。我正在尝试将这些值的格式更改为text,以便对显示的单元格的值进行vlookup。因此,如果我看到2018年7月28日,我想按原样进行vlookup,而不是获得vlookup结果作为数字或日期(大多数时间会自动将其转换为数字)。到目前为止,我已经尝试了以下内容,但效果不佳。

ws3.Range("I2:J" & lastrow1).NumberFormat = "@"

1 个答案:

答案 0 :(得分:4)

让我们从一张小桌子开始:

enter image description here

如您所见, 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)

我们得到的是:

enter image description here

如您所见,正确的格式会被提取!!

注意:有局限性。...它不会提取下划线或字体颜色或单元格背景颜色,等等。

用户定义的功能(UDF)非常容易安装和使用:

  1. ALT + F11 弹出VBE窗口
  2. ALT + I ALT + M 打开一个新模块
  3. 将内容粘贴并关闭VBE窗口

如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

删除 UDF:

  1. 如上调出VBE窗口
  2. 清除代码
  3. 关闭VBE窗口

使用来自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

必须启用宏才能使其正常工作!