2016-06-21 2 views
1

Так что я новичок в Excel/VBA, и мне было предложено попытаться выполнить напряженную задачу и автоматизировать процесс. Мне нужно захватить каждый идентификатор билета на листе 1 (по одному) и проверить, находится ли он во втором листе. Затем тот же процесс для листа 2, сравнивающий лист1. Идентификаторы билетов указаны в столбце 2 листов. Если я не найду идентификатор билета на другом листе, мне нужно добавить эту целую строку идентификатора билета на третий лист.Аутентификационные столбцы неконкретных ячеек Excel VBA

Dim i As Integer, TicketId As Range, CellId As Range 
Dim SearchRange1 As Range, SearchRange2 As Range 
Dim rowCount1 As Integer, rowCount2 As Integer, x As Integer 
x = 1 

'Get row counts from both sheets and set search ranges## 
Sheets("Sheet1").Select 
rowCount1 = Range("A2", Range("A2").End(xlDown)).Count 
Set SearchRange1 = Range("B2", Range("B2").End(xlDown)) 

Sheets("Sheet2").Select 
rowCount2 = Range("A2", Range("A2").End(xlDown)).Count 
Set SearchRange2 = Range("B2", Range("B2").End(xlDown)) 

'loop to compare differences in sheet1 to sheet2 and add to third sheet## 
For i = 2 To rowCount1 
    Sheets("Sheet1").Select 
    Set TicketId = Cells(i, 2) 
    Set CellId = SearchRange2.Find(What:=TicketId) 
    If CellId Is Nothing Then 
     Rows(i).Select 
     Selection.Copy 
     Sheets("Sheet3").Select 
     Cells(x, 1).Select 
     Cells(x, 1).PasteSpecial 
     Rows(x).Select 
     Selection.Columns.AutoFit 
        'Cells(x, 1).Value = TicketId.Value## 
     x = x + 1 
    End If 
Next i 
'Sheets("Sheet2").Select## 

Application.CutCopyMode = False 

Моя проблема заключается в том, что, когда я получаю данные в третьем листе, я не могу получить столбцы, чтобы соответствовать правильно, и я не могу видеть все данные. Я исследовал и нашел команду AutoFit, но я не знаю, как ее реализовать в моем коде. Я видел другие реализации AutoFit, но кодер всегда знает диапазон, который он использует специально. Я не знаю строку, в которую я помещаю данные. Я включил одну из многих реализаций, которые я пробовал: выбор строки и автоподбор моего выбора. Предложения? В качестве побочного примечания мой метод склеивания также является единственным, который будет работать для меня, я попытался использовать pastespecial с: = xlPasteValues ​​и: = xlPasteFormats, но это тоже не сработало.

+0

'Строки (x) .Выберите | Selection.Columns.AutoFit' вы выбираете строку, затем пытается автоподнять столбец .... что это ??? Edit: также Batman свяжет вас, чтобы избежать использования 'select'. – findwindow

+0

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

+0

Лол, конечно, Бэтмен не борется с преступностью. Это хорошо для 2 дней^_^ – findwindow

ответ

1

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

ThisWorkbook.Worksheets("Sheet3").columns.autofit 
+0

Спасибо, я только что скорректировал его и, похоже, сработал. – rdan1

+0

Ищет этот один вкладыш на некоторое время. – GibralterTop

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