
У меня есть таблица данных, в которой много столбцов, которые могут менять положение. Чтобы было проще пользоваться, я хочу создать вторую таблицу, которая будет хранить столбцы в указанном порядке. Я могу рассчитывать на то, что заголовки столбцов останутся прежними, поэтому я хочу копировать столбцы на основе их заголовка, или, точнее, первой ячейки в столбце, которая соответствует строке.
В качестве примера три столбца на листе 1:
id name due date
Но в другом случае листа 1 они могут выглядеть как
id due date name
Я хочу, чтобы мой второй лист указывал, что первая строка — «id», вторая — «name» и т. д. Я пытался использовать hlookup, но нашел его полезным только для заполнения одной ячейки, перетаскивание формулы не очень хорошо для меня. Есть идеи, как сделать это с помощью функций в excel? Я бы предпочел не использовать макрос, если это не абсолютно необходимо.
решение1
=HLOOKUP(A$1,Sheet1!$A:$C,ROW(),FALSE)
При заполнении формулы функция ROW() действует как смещение для просмотра следующего столбца в таблице.
решение2
Я часто с этим сталкиваюсь. Один из простых способов решения этой проблемы — сделать так, чтобы столбцы ссылались на первую страницу со смещением. Предполагая, что эти переменные данные находятся на Листе 1, в A1:Q499, а затем на Листе 2, я бы поместил это в ячейку B2:
OFFSET(Sheet1!$A$2,0,MATCH(A$1,Sheet1!$A$1:$Q$1,0)-1,499,)
Для пущей изысканности вы можете установить защиту ячеек на Лист2, A1:Q1, которая допускает только значения из списка, и использовать Лист1 A1:q1 в качестве этого списка.