Привет.
Любой консультант должен знать Excel. Аксиома. Последние несколько дней я плотно работаю с этим инструментом, обрабатывая большие массивы данных, которые не имеют отношения к миграции. Написал для себя пару функций, которых нет в стандарте, а могут понадобиться.
Функция JoinRow для конкатенации (слияния) ячеек. Обычно мы пользуемся знаком амперсанд (&) или функцией СЛИЯНИЕ(CONCATENTA), но та нужно каждую ячейку указать принудительно. Например, =A1&”,”&A2. А тут микрофункция, которая сама прогуляется по указанному диапазону и сделает слияние за секунды. Сохранило мне около часа времени.
|
Function JoinRow(ByRef rng As Range, ByVal delim As String) Dim a, i As Long a = rng.Value For i = 1 To UBound(a, 2) If a(1, i) <> "" Then JoinRow = JoinRow & a(1, i) & delim End If Next End Function |
Вторая функция, точнее процедура, нужна любителям сводных таблиц и фильтров. Если вы загружаете XML в Excel (а мне пришлось загрузить несколько тысяч XML файлов и обработать) или вам нужно данные в плоской таблице привести к удобному виду для фильрования или создания сводной таблицы, то вот моя вторая процедура.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Sub FillEmptyCells() Dim rng As Range Set rng = Selection Dim a, x, y As Long a = rng.Value For x = 1 To UBound(a, 2) For y = 2 To UBound(a, 1) If Worksheets(1).Cells(y, x).Value = "" Then Worksheets(1).Cells(y, x).Value = Worksheets(1).Cells(y - 1, x).Value End If Next Next End Sub |
Выделяем в Excel на первом листе нужный нам диапазон и запускаем. Процедура идет сверху вниз слева направо и делает простую проверку. Если текущая ячейка пустая, то вставить в нее значение из ячейки сверху. Это бывает нужно, когда у вас данные лежат как иерархия, то есть каждая левая колонка является родителем для правой. Чтобы такие данные обрабатывать нужно для каждого ребенка слева явно прописать родителя (значение). Этот простой макрос и выполняет такую работу.
Сэкономило мне примерно день работы 🙂
Исходя из поставленной мне задачи компания Заказчик сэкономила около тысячи долларов США всего лишь из-за двух функций в Excel.