Получить все записи с 1 листа на другой лист в Excel - PullRequest
0 голосов
/ 14 сентября 2018

Мне нужно получить все записи, если фильтр «удален», и мне нужно автоматически заполнить его на другом листе в том же Excel. Например,

Лист 1:

Filter  | Id     | Name                  | Username

Added   | 58621  | IDR User2             | AIG_IDR

Deleted | 59088  | Clearwater Analytics  | AIGTessa2

Deleted | 59422  | Janine Mullin         | 32313082

Added   | 59424  | Jonathan Lawless      | 3231367

В листе 2 , он должен автоматически добавить или перечислить все удаленные фильтры.

Filter  | Id     | Name                  | Username

Deleted | 59088  | Clearwater Analytics  | AIGTessa2

Deleted | 59422  | Janine Mullin         | 32313082

Возможно ли это сделать? Если да, можете ли вы дать мне представление о том, как это сделать? Используя условную формулу.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Предполагая, что ваши данные листа 1 занимают столбцы от A до D, у каждой позиции есть уникальный идентификатор (в столбце B), и вы хотите извлечь только «удаленные» позиции из листа 1 в лист 2, а затем формулу массива использование INDEX, SMALL and ROW должно быть достаточным для получения идентификаторов удаленных записей, и простая комбинация INDEX + MATCH для других данных столбца, на которые ссылается возвращенный идентификатор.

Предполагая, что мы хотим начать список в строке 2 листа 2, скопируйте следующую формулу в ячейку B2:

=iferror(index(sheet1!b:b,small(if(sheet1!a:a="deleted",row(sheet1!a:a)),row(1:1))),"")

Обязательно нажмите CONTROL + SHIFT + ENTER при возврате указанной формулы. После этого вы можете перетащить формулу вниз, чтобы получить все идентификаторы удаленных записей. Когда он начнет возвращать пустые значения, это будет означать, что все идентификаторы удаленных записей уже возвращены.

Далее в столбцах A, C и D листа 2 введите следующее:

=iferror(index(sheet1!a:a,match(b2,sheet1!b:b,0)),"")

Нет необходимости в CONTROL+SHIFT+ENTER при применении этого. Для этого просто измените a: a на c: c в качестве имени и d: d в качестве имени пользователя. Опять же, это предполагает, что первое значение идентификатора находится в строке 2 (ячейка B2), из которой мы ссылаемся на MATCH.

0 голосов
/ 14 сентября 2018

Примерно так будет работать с незначительными изменениями:

Dim shtNew As Worksheet, shtOrg As Worksheet

Set shtOrg = ActiveSheet
Set shtNew = Sheets.Add

With shtOrg.Range("A1").CurrentRegion
    .AutoFilter Field:=1, Criteria1:="Deleted"

    .SpecialCells(xlCellTypeVisible).Copy shtNew.Cells(1, 1)

    .AutoFilter
End With
...