2013-11-22 3 views
0

Мой код:Excel VBA найти дубликаты записей в листах

For i = 1 To iRowNumber 
If Cells(i, x).Value > 1 Then 

    Cells(i, 2).Copy 
    Sheets(1).Select 
    Cells(1, 1).Value = Now 
    Cells(1, 2).Value = "Duplicate" 
    Cells(1, 4).Select 
    ActiveSheet.Paste 
    Cells(1, 3).Value = Mid(Cells(1, 4), 5, 4) 

End If 
Next i 
x=x+1 

Состояние:

лист (2)> 130916001, 130916001000009, 1 «~> проверить, если 3-й колонке более чем 1

ожидаемый результат:

листов (1) первая строка> время, "дубликат", 1600, 130916001000009

лист (2) 130916001, 130916001000009, 2 «~> изменение 1 стали 2

Результат:

лист (1) штраф

лист (2) 130916001, 130916001000009, not2 «~> ошибка

Если я извлечу эту часть кода, счетчик работает нормально

Fyi У меня есть 6 листов, но не знаю, из-за этого или нет?

+0

Вы должны быть точнее о своих объектах, ваш код не очень ясен, на каких ячейках он смотрит. Вызовите свои ячейки следующим образом: «Листы (« Лист1 »). Ячейки (i, 2)» и т. Д. Таким образом, вам не нужно ничего выбирать, и не имеет значения, каков ваш активный лист. – nutsch

ответ

0

Помните, что здесь содержатся некоторые предложения с квалифицированными ячейками, поэтому нет путаницы в отношении того, какие ячейки принадлежат к какому листу. Я не совсем уверен, что вы пытаетесь выполнить, но должен быть достаточно легким, чтобы внести соответствующие изменения.

Sub copyData() 
    Dim i As Long, x As Long, iRowNumber As Long 
    For i = 1 To iRowNumber 
     If Sheet2.Cells(i, 3) = 1 Then 
      With Sheet1 
       .Cells(i, 1).Value = Now() 'time 
       .Cells(i, 2).Value = "Duplicate" 
       .Cells(i, 3).Value = Mid(Sheet2.Cells(i, 2), 5, 4) 
       .Cells(i, 4).Value = Sheet2.Cells(i, 2).Value 
      End With 
      Sheet2.Cells(i, 3).Value = 2 
     End If 
    Next i 
End Sub 
Смежные вопросы