Как автоматически заполнить лист 3 строкой данных из листа 2, если дата в столбце на листе 1 также находится в столбце на листе 2? - PullRequest
0 голосов
/ 22 апреля 2019

Пока у меня есть рабочая тетрадь с 2 листами.1 лист обозначает дату в столбце с другими данными в соседних столбцах, которые здесь не релевантны.На листе 2 также есть дата в столбце, а затем в соседних 10 смежных столбцах также есть набор данных.Я хочу создать новую таблицу (лист 3), которая будет заполняться тогда и только тогда, когда дата на листе 1 также находится на листе 2, и будет возвращать ПРОСТО данные из всей строки совпадающей даты на листе 2. Реальная боль вдело в том, что иногда на листе 2 несколько строк с одинаковой датой.

Пример, на листе 1 у меня 19.02.2009 в B4.На листе 2 также есть 19.02.2009, с правой стороны которого находится куча данных для производства того дня.В листе 3 я хотел бы автоматически вернуть всю строку из листа 2. Возможно ли это?У меня болит голова :)

Я пытался использовать COUNTIF, а также MATCH, но я не могу понять, как заставить его проверять весь столбец (столбцы) на совпадение дат.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Это немного сложно сделать только с формулами.То, что предложил Доминик, решит проблему в первую очередь.Хотя, я полагаю, у этого комментария могут быть проблемы с упоминанием «нескольких строк с одинаковой датой на листе 2».Я думаю, что формулы будут возвращать только первую строку, которая соответствует критериям.

Я вижу, что нет тега VBA, но единственный ответ, который я мог придумать, был сценарий VBA, чтобы обойти эти пункты.Ему также нужен вспомогательный столбец на «Sheet2», чтобы определить, что строка уже проверена, и я установил ее в качестве столбца H (8-й столбец) в моей тестовой электронной таблице.

В случае, если это полезно для вас,пожалуйста, найдите его ниже.

Option Explicit
Sub Worksheet_activate()
Dim b, c, d, x As Integer
Dim a, ab, ac As Worksheet

'Names of the spreadsheets need to be in the speech marks.
Set a = Worksheets("Sheet1")    'Sheet to be compared.
Set ab = Worksheets("Sheet2")   'Sheet to look through and copy from.
Set ac = Worksheets("Sheet3")   ' Sheet to be pasted into.

b = a.Cells(a.Rows.Count, "A").End(xlUp).Row            'Bottom date in column A of "Sheet1"
c = ab.Cells(ab.Rows.Count, "A").End(xlUp).Row          'Bottom date in column A of "Sheet2"
d = ac.Cells(ac.Rows.Count, "A").End(xlUp).Row + 1      'Next empty space in column A of "Sheet3"
e = 8                                                   'Number value for the helper column. Set as 8 for column H.
x = 2

Do Until x > c
    'Helper column placed in column H.
    If ab.Cells(x, e) = "" Then
        If WorksheetFunction.CountIf(a.Range("A2:A" & b), ab.Range("A" & x)) >= 1 Then
            ab.Rows(x).Copy
            ac.Range("A" & d).PasteSpecial xlPasteValuesAndNumberFormats
            d = ac.Cells(ac.Rows.Count, "A").End(xlUp).Row + 1
        End If
    End If
    'Text added to helper column
    ab.Cells(x, e) = "Yes"
    x = x + 1
Loop
Application.CutCopyMode = False
ac.Range("A" & d).Select
End Sub

Для размещения вашей электронной таблицы потребуется отредактировать следующую информацию:

  • Измените названия 3 электронных таблиц в речевых метках, например, установите= Worksheets ("Here")
  • Измените значение e на номер столбца, в котором находится вспомогательный столбец, т.е. = COLUMN ()

Затем его необходимо добавитьк листу, щелкнув правой кнопкой мыши по листу и скопировав данные и выбрав «Просмотр кода» перед вставкой в ​​открывшееся окно.Код запускается при открытии вкладки, поэтому для ее обновления в некоторых ситуациях может потребоваться переключение.

0 голосов
/ 23 апреля 2019

На вашем месте я бы:

  • В «Листе 1» и «Листе 2» убедитесь, что все даты указаны в столбце «А».
  • Создать »Лист 3 'и перечислите все возможные даты в столбце «А».

В столбце «B» на «Листе 3» напишите следующую формулу ....

=IF(COUNTIFS('Sheet 1'!$A:$A,$A1,'Sheet 2'!$A:$A,$A1)>0,VLOOKUP($A1,'Sheet 2'!$A:$Z,#COLUMN NUMBER#,0),"")

Вам потребуется заменить # КОЛОННЫЙ НОМЕР # с номером столбца, который вы хотите вернуть из «Листа 2».Ввод «1» (без кавычек) вернет столбец «A», «2» вернет столбец «B» и т. Д. *

Повторите это для всех столбцов, сколько вам требуется в «Листе 3».

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...