Можно ли использовать функцию Excel INDIRECT для запуска формулы, содержащейся в виде текста в ячейке ссылки? - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь создать динамическую форму, которая будет возвращать дату на основе ввода в формате «N-й день недели в месяце, году», например «3-й понедельник января 2018 года».

Вот мои списки:

+-----+--------------+-----------+---------------+-------------------+-----------+-----------------+
| Row | (A) Instance | (B) Instance Value | (C) DayofWeek | (D) DayofWeek Value | (E) Month | (F) Month Value |
+-----+--------------+-----------+---------------+-------------------+-----------+-----------------+
|   1 | 1st          |         0 | Monday        |     1,0,6,5,4,3,2 | January   |               1 |
|   2 | 2nd          |         7 | Tuesday       |     2,1,0,6,5,4,3 | February  |               2 |
|   3 | 3rd          |        14 | Wednesday     |     3,2,1,0,6,5,4 | March     |               3 |
|   4 | 4th          |        21 | Thursday      |     4,3,2,1,0,6,5 | April     |               4 |
|   5 | Last         |           | Friday        |     5,4,3,2,1,0,6 | May       |               5 |
|   6 |              |           | Saturday      |     6,5,4,3,2,1,0 | June      |               6 |
|   7 |              |           | Sunday        |     0,6,5,4,3,2,1 | July      |               7 |
|   8 |              |           |               |                   | August    |               8 |
|   9 |              |           |               |                   | September |               9 |
|  10 |              |           |               |                   | October   |              10 |
|  11 |              |           |               |                   | November  |              11 |
|  12 |              |           |               |                   | December  |              12 |
+-----+--------------+-----------+---------------+-------------------+-----------+-----------------+

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

+---------+----------------------------------+-----------------------------------+----+--------------------------------+----+-------+
|         |             Instance             |             DayofWeek             | in |             Month              | of | Year  |
+---------+----------------------------------+-----------------------------------+----+--------------------------------+----+-------+
| Name    | 3rd                              | Monday                            |    | January                        |    | 2018  |
| Value   | 14                               | 1,0,6,5,4,3,2                     |    | 1                              |    |       |
| Formula | =VLOOKUP(Instance,B2:C5,2,FALSE) | =VLOOKUP(DayofWeek,D2:E8,2,FALSE) |    | =VLOOKUP(Month,F2:G13,2,FALSE) |    | =year |
+---------+----------------------------------+-----------------------------------+----+--------------------------------+----+-------+

Теперь я пытаюсь объединить эти значения в формулу

= CONCATENATE ( "= дата (" год "" месяц "1) +", Instance "+ выберите (будний день (Дата (", год "" месяц ", 1 ))) "DAYOFWEEK") ")

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

= дата (2018,1,1) + 14 + выберите (будний день (Дата (2018,1,1))), 1,0,6,5,4,3,2)

Можно ли запустить эту формулу и вернуть значение, вызвав его косвенно из другой ячейки?

Другие вещи, которые я пробовал:

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

Я могу заставить эту часть работать:

=DATE(year,Month,1)+Instance

и это для отображения массива

=INDIRECT("DayofWeek")

=N22&Chooseday solves as 43115+choose(weekday(Date(2018,1,1),)),1,0,6,5,4,3,2)

=DATE(year,Month,1)+occurrence+CHOOSE(WEEKDAY(DATE(year,Month,1),1),INDIRECT("G19")) возвращает # ЗНАЧЕНИЕ!

1 Ответ

0 голосов
/ 26 октября 2018

Вам не нужно все это.Эта формула заменит все таблицы поиска:

=DATE(D1,MONTH(C1 & 1),1+A1*7) - WEEKDAY(DATE(D1,MONTH(C1 & 1),8-MATCH(B1,{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"},0)))

enter image description here

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