Как сравнить выбранную строку в Workbook1 / Sheet3 с выбранной строкой в ​​Workbook2 / Sheet3 - PullRequest
0 голосов
/ 27 июня 2019

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

Workbook1 = шаблон книги, Workbook2 = моя книга WIP. Данные, которые мне нужно проанализировать, находятся на Листе 3 в обеих рабочих книгах, если это имеет значение.

Моя задача - использовать шаблонную книгу для обновления моей WIP-книги.

Что я хотел бы сделать, это выделить всю строку в Workbook1 и выделить всю строку в Workbook2. Если какие-либо данные в ячейках между столбцами 1 и 99 отличаются, я хочу автоматически вставить ВСЕ строки из Workbook1 в Workbook2, чуть ниже выбранной строки в Workbook2.

Данные в этих строках могут содержать текстовые, числовые, буквенно-цифровые и стандартные символы клавиатуры ($,% и т. Д.)

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

Спасибо за любую помощь, которую вы можете оказать. Надеюсь, я предоставил достаточно информации, чтобы объяснить мою проблему.

Ответы [ 3 ]

0 голосов
/ 27 июня 2019
sub compareandcopy()
dim source as worksheet
dim target as worksheet
set source = workbooks("nameoftemplate").worksheets(3)
set target = workbooks("my wip file").worksheets(3)
dim x as integer
dim y as integer
dim i as integer
' source.Activate
' x = Selection.Row
' target.Activate
' y = Selection.Row

'Using InputBox
x = cint(inputbox("enter row number in source"))
y = cInt(InputBox("Enter row number in target")) 'input box returns variant - y expects integer
for i = 1 to 99
if source.cells(x,i)<>target.cells(y,i) then
    target.rows(y+1).insert
    source.rows(x).copy target.cells(y+1,1)
    exit for
end if
next i
end sub
0 голосов
/ 27 июня 2019
Sub CompareRowsAndCopy1()

Dim source As Worksheet
Dim target As Worksheet

Set source = Workbooks("Template.xlsm").Worksheets("Sheet3")
Set target = Workbooks("WIP Workbook.xlsm").Worksheets("Sheet3")
Dim x As Integer
Dim y As Integer
Dim i As Integer

source.Activate
x = CInt(source.Application.InputBox(Prompt:="Select row to compare in 
template ", Type:=1))
'MsgBox x


target.Activate
y = CInt(target.Application.InputBox(Prompt:="Select row to compare in WIP 
Workbook ", Type:=1))
'MsgBox y

For i = 1 To 99 ' This indicates which columns to compare.
    If source.Cells(x, i) <> target.Cells(y, i) Then
        target.Rows(y + 1).Insert
        source.Rows(x).Copy target.Cells(y + 1, 1)
    Else
    MsgBox ("No differences found in row " & y)

Exit For
    End If
Next i
End Sub
0 голосов
/ 27 июня 2019

Цикл по ячейке данных за ячейкой - вот как это будет сделано.

x = 1 'first row of data
n = 10 'last row of data, could be 100 for all I know
y = 1 'first column of data
z = 10 'last column of data, could be 100 for all I know

Do While x <= n
y = 1 'reset the value of y
    Do While y <= z

    If Workbooks(a).Sheets("Sheet3").cells(x, y) <> Workbooks(b).Sheets("Sheet3").cells(x, y) Then
    MsgBox "Found the error in row " & x & " and column " & y & ".", VbOKOnly
    'Do something else...
    else
    End If
    y = y + 1 'go to the next column
    Loop
x = x + 1 'go to the next row
Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...