-1

Мой вопрос довольно сложный, поэтому я постараюсь использовать примеры и быть максимально понятным. В одной таблице у меня есть значения, которые заполняются на основе формулы:

Name  Timestamp  Datedif1
123    1-Oct        1     (date dif between today and timestamp, formula based)

В другой таблице я хочу иметь возможность ввести имя и заполнить часть информации из первой таблицы:

Name  Timestamp  Datedif1  Datedif2
123     2-Oct       1         0

Datedif1 извлекается из первой таблицы, Datedif2 - новая временная метка (вводится во вторую таблицу и текущую дату).

Проблема в том, что я хочу иметь возможность удалить строку из первой таблицы после ее копирования по Datedif1 .

По сути, я хотел бы сделать VLOOKUP() основанный на имени, чтобы получить Datedif1 , но сделать так, чтобы он вставлял значение Datedif1 в ячейку, а не постоянно пытался найти имя и полагался на первую таблицу, чтобы оставаться заполненным информацией.

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

Спасибо Эрику Ф. за начало. Я думаю, что мне нужно еще немного подтвердить свою активность желаний. То, что я хотел бы сделать, как только я вручную введу Имя в таблице 2, значение Datedif1 будет скопировано и вставлено из таблицы 1, как значение. Теория будет выглядеть следующим образом: если Name = "", "" If Name = 123, VLOOKUP(123, таблица 1, return datedif1(столбец 3), FALSE) вставит vlookup в качестве значения, поэтому он не изменится, если таблица 1 получит удаленный

Благодарю.

1 ответ1

0

Я сделал пример, который должен помочь вам в этом. Данные разные, но, надеюсь, вы сможете использовать их для создания собственного макроса. У меня есть два листа, как у вас. Лист1 содержит мои исходные данные. Sheet2 будет моими отфильтрованными данными.

Public Sub do_stuff_and_things()
Dim i As Integer
Dim insertrow As Integer
i = 1
Do Until i = Range("'Sheet1'!A1").End(xlDown).Row + 1

 If Range("'Sheet1'!A" & i).Value = "Joe" Then
  If Range("'Sheet1'!B" & i).Value = "2" Then
   'conditions are true so copy to next sheet
   insertrow = Range("'Sheet2'!A1").End(xlDown).Row + 1
   Range("'Sheet2'!A" & insertrow & ":D" & insertrow).Value = Range("'Sheet1'!A" & i & ":D" & i).Value
  End If
 End If

i = i + 1
Loop


End Sub

После запуска макроса, он пройдет лист1, используя условия, которые я указал в своих инструкциях IF. Если условия выполняются, то будет продолжено копирование всей строки в следующую пустую строку на Листе 2. Я указал строку, которая будет столбцами от A до D, но, конечно, замените ее на вашу.

Надеюсь, это поможет вам начать по крайней мере.

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