Объединить ячейки и сохранить оригинальное форматирование - PullRequest
0 голосов
/ 19 января 2019

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

В частности, мне нужно объединить ячейки для Site # и идентификатора устройства

Я начал с чего-то простого, например:

= СЦЕПИТЬ (С2, "-", D2)

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

Это вызвало мою следующую попытку:

= СЦЕПИТЬ (ТЕКСТ (С2, "000000000"), "-", D2)

Это сохранило лидирующие нули, но также, как и ожидалось, добавило лидирующие нули к сайтам, которые не должны иметь лидирующих нулей. Существуют устаревшие сайты, которые еще не были преобразованы в новый формат сайта #.

Мои следующие усилия также сработали так, как я ожидал. Я попытался проверить длину значения ячейки, чтобы добавить нули в объединенной ячейке, только если они присутствовали только в исходной ячейке. Как я и ожидал, начальные нули не были включены в длину.

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

1 Ответ

0 голосов
/ 19 января 2019

Попробуйте эту быструю пользовательскую функцию.

В стандартном кодовом листе модуля

function concSiteDevice(s as range, d as range, _
                        optional delim as string = "-")

    concSiteDevice = join(array(s.text, d.text), delim)

end function

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

На листе как,

 =concSiteDevice(C2, D2)

С необязательным аргументом delim вы можете изменить дефис на любой другой символ (символы). Например, чтобы использовать символ @,

 =concSiteDevice(C2, D2, "@")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...