Пожалуйста, мне нужна помощь с таблицей Excel здесь. У меня есть две таблицы, одна из которых содержит старые записи, а другая - текущую. Что я хочу сделать, это разработать код vba, связанный с командной кнопкой, найдите образец ниже, чтобы при нажатии кнопки значения в старой записи автоматически обновлялись на основе значений из новой записи. Для наглядности приведу снимок листа.

Лист1 содержит старые записи, которые доступны и могут быть просмотрены более чем 100 пользователями. sheet2 содержит новые записи, которые обновляются из различных источников, и пользователи поля могут изменять любое поле / столбец.

Поле 1 на обоих листах содержит основное поле управления. Итак, что я хочу сделать, это взять каждое значение field1 в sheet2 и затем найти его в field1 of sheet1, если значение существует, я хочу сравнить все соответствующие записи, чтобы любая разница копировалась из sheet2 в sheet1 для всех полей , Если значение вообще отсутствует в sheet1, я хочу скопировать все значение и все связанные записи в sheet2 в sheet1. Неизменно, я хочу продолжать обновлять sheet1 на основе нового обновления в sheet2.

Надеюсь, я достаточно ясно дал понять. Обратите внимание, что пример таблицы является просто упрощенной версией, поскольку у меня 75 таблиц / столбцов и более 70 000 записей в таблицах.

Спасибо за вашу ожидаемую помощь и поддержку в достижении этого.

**SHEET1**
Field1  Field2  Field3  Field4
Radms Street    781772  2   76
Mapre Street    781772  31  76
Catapilar Av    781727  1   90
Aveb Park   781727  56  91

**SHEET2**
Field1  Field2  Field3  Field4
Aveb Park   781727  56  91
Radms Street    781770  2   76
Solution Way    761111  67  1
Aknyt Road  781720  91  90
Mapre Street    781772  31  76
weedred Park    781781  23  61
Raven Road  781781  76  61
Catapilar Av    781720  21  76

1 ответ1

0

Этот VBA будет работать, просто настройте диапазоны для ваших ячеек, чтобы он не работал бесконечно. Также для регулировки петли i , чтобы отразить , сколько полей у вас есть.

Этот VBA предполагает, что значения находятся в одинаковом порядке на обоих листах и не заменяет пробелы, но также не сравнивает значения.

Sub comparesheets()
Application.ScreenUpdating = False
Dim c As Range
Dim strFind As String
Dim rFound As Range
Dim i As Integer

For Each c In Sheets("sheet1").Range("A:A")
strFind = c.Value

    With Sheets("Sheet2").Range("A:A")
        Set rFound = .Find(What:=strFind, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If Not rFound Is Nothing Then
            For i = 1 To 4
                If rFound.Offset(, i) <> "" Then
                    c.Offset(, i) = rFound.Offset(, i)
                End If
            Next i

        End If
    End With

Next c
Application.ScreenUpdating = True
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .