Страницы: 1
RSS
Копирование в массив определенных столбцов диапозона
 
Доброго времени суток!

Не могу сообразить как скопировать в массив только определенные столбцы с листа. Например, мне из файла "выгрузка1_тест" нужно скопировать в массив только столбцы ИНН и Организация. При этом, если в файле нет одного из столбцов, нужно выдать ошибку.
Как работает:
1. открываем файл "выборка_t" заходим в редактор и запускаем форму f_index
2. в поле организация выбираем файл "выгрузка1_тест"
вся обработка происходит в модуле "obrabotka"

вот код, где ищу номера столбцов в файле "выгрузка1_тест":
Код
    s = 1
    For j = 1 To UBound(n_org)
        For i = 1 To lLastColOrg
            If ar_org_t(1, i) = n_org(j) Then
                n_org_i(s) = i
                s = s + 1
            End If
        Next
    Next
    nn = UBound(n_org_i)
ar_org_t(1, i) - массив с название шапки из файла выгрузка1_тест
n_org(j) - это массив с названием нужных столбцов

И мне как-то надо определить все ли элементы массива n_org(j) нашлись в массиве ar_org_t(1, i)

Заранее спасибо! :)
Изменено: kate14 - 09.03.2015 18:08:26
 
Можно использовать Find по диапазону. Нашли - записали номер столбца. Не нашли - "мне как-то надо определить все ли..."
Или другой вариант - цикл по шапке и запоминаем в словаре номер столбца к каждому названию. Затем цикл по n_org()  и проверка что все есть в словаре.
Далее когда нужно - берём номер столбца из словаря.
Написать-проверить не могу, т.к. пример не работает вот так сразу, нужно понимать что там куда и как, а это исследовать -  непроизводительная трата времени...
 
Действительно, как вызывается форма не понятно. В коде какие-то не объявленные переменные.
Думаю, здесь можно и без словаря обойтись, достаточно одной строки :-) Пример во вложении.
Учимся сами и помогаем другим...
 
Словарь позволяет избавиться от цикла в цикле при "запоминании что где", и проще организовать затем обращение к столбцу например "ИНН", который изначально неизвестно где.
Конечно на 2 значения как "из пушки по воробьям", но код в любом случае будет проще и понятнее.
Ну а проверить что всё нашлось можно конечно как угодно. В Вашем варианте можно в финале проще, так:
Код
If --orgs Then
 
Hugo, в который раз убеждаюсь, что Вы -великий оптимизатор :-)
Учимся сами и помогаем другим...
 
Цитата
Вы -великий оптимизатор
Минус великий? Надо было бинарное ставить :)
 
:D
Учимся сами и помогаем другим...
Страницы: 1
Наверх