Excel, как объединить отдельные таблицы

460
Maxim Srour

Я работаю с коллекцией таблиц (в разных книгах), которые имеют одинаковую структуру. Это регистры заданий на данный год, и первичным ключом для каждого элемента является год (2018) плюс четырехзначный «номер строки» (1, 2, 3 ...), поэтому у нас есть идентификаторы, которые выглядят как « 20180001 ',' 20170191 'и др.

Моя проблема в том, что мне нужно иметь возможность выполнять vlookup для этих значений, не зная, на каком листе будет число, то есть все они должны находиться на одном листе. Я экспериментировал с копированием, вставляя все идентификаторы в одну таблицу, а затем выполнил другой vlookup, чтобы перетащить данные в эту таблицу, чтобы я мог ссылаться на нее как на главную копию, но это вообще не допускает расширения, и я должен быть обработанным вручную все время. Я пробовал некоторые вещи с PowerQuery, но я не могу понять, как добавить несколько запросов вместе.

Вот пример того, как могут выглядеть таблицы .

Это пример того, как может выглядеть результат .

Обратите внимание, что в таблице 1 только с 3 столбцами есть дополнительный столбец без данных, который соответствует размеру таблицы 2.

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

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

0
Боюсь, ваш вопрос неясен. Можете ли вы отредактировать его, чтобы объяснить, что вы пытаетесь сделать? Blackwood 6 лет назад 0
Попробуйте использовать цепочку IF () - проверьте VLOOKUP из одной книги, если успех - используйте, если ошибка - проверьте из другой книги: `IF (ISERROR (получить из book1), IF (ISERROR (получить из book2), ..., (получить из книги2)), (получить из книги1)) `. Akina 6 лет назад 1
Добавил пример @Blackwood, надеюсь, что прояснит Maxim Srour 6 лет назад 0
@ Акина Я не хочу использовать этот метод, потому что это означает, что его нелегко разворачивать. С вашим решением мне пришлось бы отредактировать все формулы, включив в них регистр новых годов, чтобы на них можно было ссылаться, тогда как для решения с добавлением таблиц, которое я хочу, потребуется только отредактировать запрос, извлекающий эти данные. Поскольку все это будет на одной таблице, все формулы уже будут работать Maxim Srour 6 лет назад 0
* его нелегко расширить * Если это так, создайте UDF с параметром RANGE, содержащим список книг / лет, из которых функция будет пытаться получить данные. В отличие от VLOOKUP он может определять год и получать данные из одной правильной книги, а не сканировать их все. Более того, он может кэшировать последнюю строку, прочитанную из отдельной книги, в статическую переменную и возвращать данные без чтения внешней книги, если индекс равен сохраненному в. Для расширения вы просто добавите еще одну строку в список книг. Akina 6 лет назад 0
Другая возможность - создать собственную функцию массива, которая собирает данные из всех рабочих книг в одну рабочую таблицу. Чем вы можете использовать VLOOKUP для этого собранного массива данных. Когда появилась еще одна исходная рабочая книга (или некоторые данные в какой-то рабочей книге были изменены), вы просто позволяете рабочей книге с собранной рабочей таблицей обновлять данные по внешним ссылкам ... Или вы можете создать макрос (подпрограмму), который собирает данные. Он может автоматически выполнять exec, когда открывается «сводная» рабочая книга, проверять папку с отдельными рабочими книгами на наличие новых / измененных и автоматически обновлять данные (или запрашивать их у оператора), если это необходимо. Akina 6 лет назад 0

1 ответ на вопрос

-1
Lee

Хотите получить результат, как показано ниже:

enter image description here

Это выглядит совершенно правильно. Я проверю это работает завтра утром, когда я доберусь до работы. Не уверен, почему кто-то проголосовал против вас, когда это явно решение Maxim Srour 6 лет назад 0
Может быть, я только что загрузил GIF, но не объяснил шаги четко. -.- Lee 6 лет назад 0
В любом случае, спасибо за решение. Может быть, вы могли бы разделить шаги или написать что-нибудь, чтобы это было более сплоченным решением Maxim Srour 6 лет назад 0
Я сделаю это в следующий раз. Lee 6 лет назад 0

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