Итак, у меня есть довольно сложная книга.Функция Microsoft LOOKUP просто ... не работает?
Лист 1: База данных, в которой пользователь вводит список инструментов, а также некоторые данные об инструментах в вертикальной колонке.
Лист 2: Лист, содержащий ту же информацию, что и лист 1, но отображает его в другом формате. Заполнятся автоматически на основе записей из листа 1. (не полезно в этом вопросе)
Там существует макрос на листе 1, который выполняется при нажатии на кнопку. Этот макрос принимает каждый столбец из Листа 1 и создает новый лист для каждого столбца. Каждый новый лист, Лист 3, переименовывается в первое значение в столбце Листа 1, которое он представляет.
- т.е. Есть 4 колонки в листе 1 с первым значением в каждом столбце существа: LS-АЛЬФА, LS-БРАВО, LS-CHARLIE, LS-DELTA. Мой макрос создаст 4 новых листа, называемых LS-ALPHA, LS-BRAVO, LS-CHARLIE, LS-DELTA.
Первая ячейка (технически H2) на каждом из новых листов содержит формулу для ссылки на название листа.
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)
- т.е. H2 на листе LS-ALPHA будет на самом деле сказать, "LS-АЛЬФА", H2 на листе LS-BRAVO скажет LS-BRAVO и т.д.
Каждая другая ячейка данных на новом листе автоматически будет искать это значение на основном листе (лист 1), чтобы определить, из какого столбца он находится. Затем он будет ниже этого значения и получит содержимое из некоторых строк x ячейки ниже.
=LOOKUP(H2,'Database (Cols)'!D2:AN2,'Database (Cols)'!D3:AN3)
Это работает абсолютно отлично. Он делает все хорошо.
За исключением, не всегда.
- Если я переименовал столбцы в «LS-A, LS-B, LS-C, LS-D», он работает. Если я переименую столбцы в «LS-AA, LS-AB, LS-AC, LS-AD», он работает. Если я переименую столбцы в «LS-AAA, LS-AAB, LS-AAC, LS-AAD», он будет работать.
Однако если переименовать столбцы в чем-то вроде "LS-TTF, LS-TTD, LS-TSD, LS-СБТ" все они сломаны как-то .... Ни одна из ссылок на листов работа больше. Некоторые из них указывают на неправильный столбец, если они даже показывают что-то. Этот вопрос, который у меня есть, невероятно необычен. Я не знаю, почему эти имена ломают его, в частности, и я не знаю, какие другие имена также нарушат его.
Что происходит, когда он «ломается»: Все ссылки, похоже, обнаруживают последний доступный столбец в LOOKUP. Три из четырех листов используют значения из четвертого столбца, если они не должны. Затем один лист просто дает мне ошибки (# N/A). Когда я перехожу к расчету, он ищет правильное значение в функции LOOKUP, он просто не возвращает правильную вещь ....
Я не могу дать больше информации, не показывая вам, что происходит, поэтому я включил рабочую таблицу и сломанную электронную таблицу. Листы были созданы из макроса, поэтому вам не нужно возиться с ним. Рабочая и сломанные файлы ниже:
Рабочие: https://drive.google.com/file/d/0B9zbU-BeMQNfSmRrWVhKVW9RN3M/view?usp=drivesdk
Сломанное: https://drive.google.com/file/d/0B9zbU-BeMQNfd1FUemwxQjQwMEE/view?usp=drivesdk
Примечания эха столбца для целей отладки. Я пытался увидеть, будут ли они показывать эхо вместо дельта. Видимо, они этого не делают.
Я не вижу никакой разницы. Где это? –
«Сломанные» листы показывают дельта во всех значениях. (За исключением того, что по какой-либо причине один лист показывает # N/A) Листы «Рабочие» показывают правильные соответствующие значения; «alpha #» «beta #» и т. д. –
База данных выглядит следующим образом: https://s32.postimg.org/bld2rekn9/database.png Правильной записью будет LS-TSF, показывающий «дельта», например : https://s32.postimg.org/b7bqrt0jp/correct.png Недопустимая запись будет LS-TTF, показывающая «delta» вместо «alpha»: https://s32.postimg.org/5lpbnqzut/ incorrect.png Если имена столбцов изменены, как в рабочей таблице, эта проблема не возникает –