У меня есть таблица контактных данных поставщиков, организованная следующим образом:
vendorname | address | city | state | zip | phone | fax | contactperson | phone | email
... и я хочу выбрать vendorname
из выпадающего меню на другом листе (обработал эту часть), который затем заполнил бы контактную информацию для этого поставщика в ячейках ниже.
Чтобы было сложнее, я хочу, чтобы он игнорировал все пустые столбцы таблицы. Например, скажем, нет номера факса для записи в таблице. Я не хочу, чтобы он помещал пустую ячейку между «телефоном» и «контактным лицом».
Можно ли это сделать, просто используя формулы?
источник
Да, это может быть достигнуто только с помощью формул:
Поиск ярлыков (столбец A):
=IFERROR(INDEX(Table1[#Headers],SMALL(IF(OFFSET(Table1[#Headers],MATCH($B$8,Table1[vendorname],0),0)="","",COLUMN(Table1[#Headers])),ROW()-ROW($A$7))),"")
MATCH($B$8,Table1[vendorname],0)
находит строку, которая содержит выбранный контактOFFSET(Table1[#Headers],MATCH(...),0)
получает адрес выбранной строкиIF(OFFSET(...)="","",COLUMN(Table1[#Headers]))
проверяет, какие столбцы выбранного элемента содержат данные (пустое значение для пустых, номер столбца для остальных)SMALL(IF(...),ROW()-ROW($A$7)
выбирает следующий столбец для использованияINDEX(Table1[#Headers],SMALL(...))
получает титул=IFERROR(INDEX(...),"")
показывает пустую ячейку после отображения всех данныхПоиск данных (столбец B):
=IFERROR(INDEX(OFFSET(Table1[#Headers],MATCH($B$8,Table1[vendorname],0),0),SMALL(IF(OFFSET(Table1[#Headers],MATCH($B$8,Table1[vendorname],0),0)="","",COLUMN(Table1[#Headers])),ROW()-ROW($A$7))),"")
Единственное отличие от предыдущего - это первый параметр
INDEX()
что то же самоеOFFSET()
формула, используемая в small для поиска данных в выбранной строке, а не в заголовке.Обе формулы являются формулами массива, поэтому вам нужно ввести их CTRL + СДВИГ + ВОЙТИ
источник