2014-02-20 2 views
1

У меня есть две таблицы: vda.xlsx и main.xlsm. На данный момент я сравнив значения:Разделение значения столбца ячейки перед сравнением

колонке main.xlsm J

с

vda.xlsx колонка А

Чтобы увидеть, если есть совпадение. Если совпадение найдено, значение в столбце подсвечивается красным цветом.

Однако формат данных в vda.xlsx column A изменился.

Раньше смотреть, как этот

Теперь он выглядит как этот

Test \ 1234 или Best \ 1234 или Jest \ 1234 - это может быть любым ...

Sp Мне нужно разбить тест \ 1234 на "\ »и выведите 1234 для сравнения.

Любая идея, как я могу это сделать. Это мой код до сих пор:

Sub VDA_Update() 

Dim wshT As Worksheet 
    Dim wbk As Workbook 
    Dim wshS As Worksheet 
    Dim r As Long 
    Dim m As Long 
    Dim cel As Range 
    Application.ScreenUpdating = False 
    Set wshT = ThisWorkbook.Worksheets("Master") 
    On Error Resume Next 

    ' Check whether vda.xlsx is already open 
    Set wbk = Workbooks("vda.xlsx") 
     On Error GoTo 0 
     If wbk Is Nothing Then 
     ' If not, open it 
     Set wbk = Workbooks.Open("C:\Working\vda_test.xlsx") 
    End If 

    ' Set worksheet on vda.xlsx 
    Set wshS = wbk.Worksheets("imac01") 
    m = wshT.Cells(wshT.Rows.Count, 1).End(xlUp).Row 

    ' Loop though cells in column J on main.xlsm 
    For r = 1 To m 
     ' Can we find the value in column C of vda.xlsx? 

     Set cel = wshS.Columns(1).Find(What:=wshT.Cells(r, 10).Value, _ 
      LookAt:=xlWhole, MatchCase:=False) 

     If Not cel Is Nothing Then 

      ' If we find a match, then change the text to red 
      wshT.Cells(r, 10).Font.ColorIndex = 3 

     End If 
    Next r 

    Application.ScreenUpdating = True 

End Sub 
+0

уточнения пожалуйста, ваш 'main' Учебное пособие содержит' 1234', и ваш 'vda' Учебное пособие содержит данные, такие как' 1234' тест \ и вам нужно определить, находится ли '1234' (из' main' wb) в столбце 'A' книги' vda' (в формате 'test \ 1234')? –

+0

Мне нужно увидеть, можно ли найти '1234' в' test \ 1234' (да, он может), разделив его на массив и извлекая последний элемент в массиве (как видно из нижеприведенного ответа) – theshizy

+0

Это понятно, но какая книга содержит '1234', а какая' test \ 1234'? –

ответ

1

Split(CellValue, "\") Используйте, чтобы получить массив, а затем получить последний элемент в массиве.

Изменение:

' Loop though cells in column J on main.xlsm 
For r = 1 To m 
    ' Can we find the value in column C of vda.xlsx? 

    Set cel = wshS.Columns(1).Find(What:=wshT.Cells(r, 10).Value, _ 
     LookAt:=xlWhole, MatchCase:=False) 

    If Not cel Is Nothing Then 

     ' If we find a match, then change the text to red 
     wshT.Cells(r, 10).Font.ColorIndex = 3 

    End If 
Next r 

Чтобы что-то вроде:

' Loop though cells in column A on vda.xlsx 
For r = 1 To m 
    ' Can we find the value in column J of main.xlsm? 

    cellSplit = Split(wshS.Cells(r, 1).Value, "\") 
    Set cel = wshT.Columns(10).Find(cellSplit(UBound(cellSplit)), _ 
     LookAt:=xlWhole, MatchCase:=False) 

    If Not cel Is Nothing Then 

     ' If we find a match, then change the text to red 
     cel.Cells(1, 1).Font.ColorIndex = 3 

    End If 
Next r 
+0

В какой момент я его использую? – theshizy

+0

@ Antoine-LaurentLavoisier добавил пример того, как вы могли это сделать. Может содержать некоторые ошибки, хотя – neelsg

+0

Я получаю ошибку времени выполнения в 'Set cel = wshT.Columns (10) .Find (cellSplit (UBound (cellSplit)), _ LookAt: = xlWhole, MatchCase: = False)' – theshizy

Смежные вопросы