2016-08-05 5 views
3

Что мой код делает, так это то, что он автоматически получит список файлов Excel в папке и сравните Серийный номер в столбце главного списка, а затем, если значение будет одинаковым, оно скопирует серийный номер и вставьте его в столбец C. Если оба формата столбцов совпадают, тогда он будет работать отлично. Но если столбец отформатирован в тексте, сравнение кажется неудачным. Я искал достаточно времени, чтобы преобразовать эти ячейки в формат номера или общий формат, чтобы сравнение можно было успешно выполнить без заботы о формате.Excel VBA Как преобразовать текст формата ячейки в номер

enter image description here

enter image description here

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 

ответ

3

Попробуйте добавить следующую строку кода: Columns("A").TextToColumns. Оно работает.

Извините за незначительное изменение. Кто-то отклонил мой ответ, который оказался правильным. T_T

+0

Это даже близко к полезному ответу, если вы посмотрите на вопрос. Пожалуйста, удалите или измените свой ответ в соответствии с вопросом. Метод TextToColumns анализирует столбец ячеек, содержащий текст в нескольких столбцах. Это не имеет ничего общего с изменением формата ячейки. – dbmitch

+0

@dbmitch. Я попробовал этот код, чтобы изменить число в текстовом формате на числовой формат (общий) в столбце, и он сработал. Я пробовал весь свой код, прежде чем публиковать его как ответы –

+1

Спасибо Анастасии за решение. Он работает отлично. –

0

Другой способ

Допустим, ваш диапазон от A1:A15, то вы можете сделать это, а также

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

Чтобы понять, что это делает, вы можете увидеть This сообщение