Я делаю что-то не так. Пожалуйста, помогите мне... СИТУАЦИЯ: получил две вкладки - Input_Tab и Database_Tab. Хотите обновить базу данных, используя входные данные. TAB INPUT: столбец Input_Tab A: имеет 60 строк заголовков (Staff_ID, Status, Staff_Name, Salary и т.д.) Столбец Input_Tab B: имеет соответствующие 60 строк значений (например, Emp001, Active, John Smith, $ 150k и т.д.) TAB базы данных: Database_Tab имеет 55 столбцов (не 60 и не в том же порядке, что и Input_Tab). Database_Tab Строка 1: имеет 55 заголовков. Строка Database_Tab 2-901: содержит 900 строк данных соответствующих сотрудников под каждым заголовком. ЦЕЛЬ: Используя два критерия (Staff_ID и Status, например, «Emp001» и «Active»), обновите Database_Tab, используя значения из Input_Tab. (Обычный Excel - это просто vlookup, но, конечно, нужен VBA для индивидуального обновления 900 сотрудников.)

Мой VBA ниже не работает ... Пожалуйста, помогите мне.


Sub UpdateRowData()

 Sheets("Input").Activate

 Dim staff_ID As String
 Dim staff_status As String
 Dim found_ID As Range
 Dim found_status As Range

 staff_ID = Sheets("Input").Range("B1").Select
 staff_status = Sheets("Input").Range("B2").Select

 Sheets("Database").Activate

 Dim first_blank_row As Long

 first_blank_row = Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).Row

 starting_row = 1

 Dim r As Long

 r = starting_row

 staff_ID = Sheets("Database").Range("a" & r).Value
 staff_status = Sheets("Database").Range("b" & r).Value

 Do While staff_ID <> 0
      Set found_ID = Columns("a:a").Find(what:=staff_ID, LookIn:=xlValues, lookat:=xlWhole)
      Set found_status = Columns("b:b").Find(what:=staff_status, LookIn:=xlValues, lookat:=xlWhole)

     If (found_ID Is Nothing And found_status Is Nothing) Then
        '<<<…Add new data at the end of Database.
         For c = 1 To 500
         Sheets("Database").Cells(first_blank_row, c) = Sheets("Input").Cells(r, c)
         first_blank_row = first_blank_row + 1
         Next c
     Else
        '<<<…else, update existing data.
         For c = 1 To 500
         Sheets("Database").Cells(found_ID.Row, c) = Sheets("Input").Cells(r, c)
         Next c
     End If

 r = r + 1

    Loop

End Sub

0