Excel VBA如何将单元格格式文本转换为数字

我的代码所做的是自动获取文件夹中的所有Excel文件列表,并比较主列表中的序列号,如果值相同,则会复制序列号并粘贴到C列。 如果两个列格式都相同,那么它将完美工作。 但是,如果列是格式化的文本,比较似乎失败。 我一直在寻找相当长的一段时间来将这些单元格转换为数字格式或一般格式,以便比较可以成功地完成,而不必关心格式。

在这里输入图像说明

在这里输入图像说明

Sub Compare() Dim Dic As Object Dim fso As Object Dim fldStart As Object Dim fl As Object Dim Mask As String, i As Long Dim Wbk As Worksheet, w1 As Worksheet Set fso = CreateObject("scripting.FileSystemObject") Set fld = fso.GetFolder("C:\Users\kelvinwong\Desktop\Survey Testing") Set w1 = Workbooks("Book1.xlsm").Sheets("Sheet1") Set Dic = CreateObject("Scripting.Dictionary") Mask = "*.xlsx" For Each fl In fld.Files If fl.Name Like Mask Then Set Wbk = Workbooks.Open(fld & "\" & fl.Name).Sheets("Sheet1") i = Wbk.Cells.SpecialCells(xlCellTypeLastCell).Row For Each oCell In Wbk.Range("A2:A" & i) If Not Dic.exists(oCell.Value) Then Dic.Add oCell.Value, oCell.Offset(, 0).Value End If Next oCell End If Next fl i = w1.Cells.SpecialCells(xlCellTypeLastCell).Row For Each oCell In w1.Range("A2:A" & i) For Each key In Dic If oCell.Value = key Then oCell.Offset(, 2).Value = Dic(key) End If Next Next End Sub 

尝试Columns("A").TextToColumns添加到您的代码: Columns("A").TextToColumns 。 有用。

对不起,小编辑。 有人低估了我的答案,结果是正确的。 T_T

其他方式

假设你的范围是从A1:A15那么你也可以这样做

 [A1:A15] = [INDEX(INT(A1:A15),)] 

为了理解这是什么,你可以看到这个职位