Вопрос по excel, excel-formula, vba, excel-vba – Как мне заставить мою формулу всегда ссылаться на последний лист?

8

В настоящее время у меня есть 2 листа в моем файле Excel.

Первый лист называется страницей Сводка, на которой отображается сводный результат второго листа.

Второй лист известен как необработанные данные. Примером может служить столбец с именем Fruits.

<code>Apple
Apple
Apple
Banana
Banana
Pear
</code>

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

<code>=COUNTIF(Fruits!A2:A7,"Apple")
=COUNTIF(Fruits!A2:A7,"Banana")
</code>

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

(Предполагая, что расположение данных и все те же, что и на втором листе.)

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

<code>=COUNTIF((GETLASTWSNAME())!A2:A7,"Apple)
</code>

Приведенная выше формула - это то, как я хочу, чтобы моя формула работала, но, к сожалению, Excel не позволяет мне это сделать.

Любые замечания будут оценены. Спасибо!

извиняюсь. я не понимаю, что вы на самом деле имеете в виду? Thomas
не берите в голову, я забыл, что когда вы переименовываете лист, формулы автоматически используют новое имя .. Aprillion
Можете ли вы назвать последний лист "Актуальным"? и переименуйте его в «Апрель» когда вы создаете новый фактический лист? Aprillion

Ваш Ответ

2   ответа
10

Для этого можно использовать обходной путь XLM / Range Name, а не VBA, если вы предпочитаете

  1. Define a range name, wshNames to hold the array of sheet names
    =RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1)))
    Uses David Hager's technique
  2. Use this Excel formula to extract the last sheet name from the array of sheet names
    =INDEX(wshNames,COUNTA(wshNames)+RAND()*0)

Эта формула говорит, что посмотрите на все листы, а затем верните последний (используя COUNTA).RAND()*0) часть гарантирует, что формула является изменчивой и обновляется, когда Excel делает

Если вы используете VBA, вам необходимо убедиться, чтоGETLASTWSNAME функция является изменчивой, то есть обновляется при возникновении изменений.

enter image description here

6

=COUNTIF(INDIRECT(GETLASTWSNAME() & "!A2:A7"),"Apple")

Похожие вопросы