0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 14
|
|
1 | |
Как загнать в массив столбцы идущие не по порядку13.08.2013, 17:30. Показов 3769. Ответов 39
Метки нет (Все метки)
Всем привет!
Столкнулся с проблемой, имеется таблица в формате excel. В ней есть n-е количетсов заполненных столбцов, как загнать в массив к примеру столбцы A,B,N,Z, при условии что они идут не по порядку и их порядок изменять нельзя.
0
|
13.08.2013, 17:30 | |
Ответы с готовыми решениями:
39
Как загнать текст из консоли в массив и как загнать текст из файла в массив Как загнать предложение в массив? Как массив загнать в Bitmap Как из ListBox загнать значение в массив? |
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
||||||
15.08.2013, 12:24 | 21 | |||||
Никаких ошибок.
0
|
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 14
|
|
15.08.2013, 12:33 [ТС] | 22 |
а если я не знаю размер массива, я собственно с этой целью и хочу определить индекс последнего элемента, для того чтобы потом записать туда новое значение. По сути, тот же справочник.
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
15.08.2013, 12:40 | 23 |
Если ругается на UBound(array_1) - значит array_1 не массив!
Т.е. ошибка раньше. Ну или нужно в коде ставить проверку на этот казус.
0
|
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 14
|
|||||||||||
15.08.2013, 13:07 [ТС] | 24 | ||||||||||
Если я все правильно понимаю, то размер массива (если его размерность не определена изначально) опредлятеся индексом последнего элемента. Я пытаюсь вычислить этот индекс через UBound, но ничего не выходит.
Добавлено через 3 минуты Я объявил массив:
subsript out of range
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
15.08.2013, 13:13 | 25 |
Зачем определять размер того, чего ещё фактически нет?
Вообще я не теоретик, поэтому не объясню. Массив конечно уже есть (MsgBox IsArray(slovar)), но его ещё нет
0
|
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 14
|
|
15.08.2013, 13:17 [ТС] | 26 |
Ну я изначально ввожу туда 1 значение, чтобы далее как минимум размерность была равна 1, а вот дальше в зависимости от наращивания значений уже необходимо определять размерность
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
||||||
15.08.2013, 13:27 | 27 | |||||
Если вносите - должно вывести размер.
Можно даже не вносить - достаточно размер задать:
0
|
KoGG
|
15.08.2013, 13:49
#28
|
Не по теме: ..... удалено
0
|
2618 / 548 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
|
||||||
15.08.2013, 20:52 | 29 | |||||
Словарь входит в инструментарий WSH. У VB(A) имеется сходный по своей сути инструмент - коллекция. Впрочем, возможности у них несколько отличаются.
Поскольку Вы используете массив типа Variant, то удобнее поступать так:
1
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|||||||||||
15.08.2013, 21:36 | 30 | ||||||||||
Но это не значит, что в макросах нельзя применять словарь.
Вполне можно. Можно даже применять "коллекции Visual Basic .NET", что есть что-то вроде обычного словаря, но например с встроенной сортировкой. А вместо
0
|
2618 / 548 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
|
|||||||||||
16.08.2013, 21:00 | 31 | ||||||||||
Речь об этом и не шла. Была лишь указана "родительская" технология обсуждаемого инструмента.
Чтобы не вводить начинающих разработчиков макросов в заблуждение, уточню, что оператору
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
17.08.2013, 00:54 | 32 |
Почему 1 to 11? Обычно 0 to 10, но возможно 1 to 10 - если будет задано option base 1.
0
|
2618 / 548 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
|
|||||||||||||||||||||
17.08.2013, 03:34 | 33 | ||||||||||||||||||||
Потому что без оператора
Стало быть, для сохранении того же количества значений индекса при его начальном значении, равном 1, необходим оператор
0
|
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 14
|
|
17.08.2013, 11:39 [ТС] | 34 |
А мне кажется, что нет разницы от 0 или от 1 =)
только при 1 нужно еще Option Base прописывать)))а это на строку больше
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
17.08.2013, 12:07 | 35 |
Для того же количества - да.
Но когда начинающий пишет ReDim arr(10) - он скорее всего хочет получить массив из 10 значений В любом случае надёжнее не полагаться на option base в чужих файлах (для себя конечно другое дело, но не для форума). Другое дело wsh/vbs - там n to m не работает...
0
|
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 14
|
||||||
17.08.2013, 12:58 [ТС] | 36 | |||||
кстати, вот кусок кода:
2. Если длина строки больше 17, то выполнение кода переходит на этот кусок 3. Вырезаю 4 символа, если они = весь, то добавляю +1 в столбец 4. Если нет, то вырезаю 5 символов, и если они = часть, то записываю 19 символов (это нормальная длина для одного номера коробки) в массив, вот тут то меня и настигла печаль, когда я пытаюсь вычислить индекс последнего заполненого элемента в массиве slovar, то у меня нифига не меняется.
0
|
Модератор
|
|
17.08.2013, 15:24 | 37 |
мес,фио,должность,отработанные часы,суммы зарплаты по видам,итого 01,иванов,слесарь,160,11000,5000,6000,0,12000,34000 01,петров,...................... 02,иванов(другой),электрик,120,10000,500,2000,0,0,12500 02,иванов,слесарь,60,10000,2000,3000,1000,2000,18000 03,иванов,слесарь,уволился получить фио,должн,отработанное время и итого по месяцам ---------,01в,01и,02в,02и иванов,слесарь,160,34000,60,18000,-,- иванов(другой),электрик,-,-,120,12500,160,32000 ================= насколько сильно я ошиблась в логике задачи не обязательно выкладывать реальные таблицы всегда есть ---ооо рага и ковыты --столы стулья --количество-цена-сумма-ндс
0
|
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 14
|
|
17.08.2013, 18:08 [ТС] | 38 |
эммм....я даж не знаю что сказать)
я ничего не понял из вашего сообщения =) Видимо я также выразился. Добавлено через 9 минут примерный вариант таблицы следующий: Город \ № коробки \ Человек \ Наименование наполнителя коробки Иркутск \ 1234-часть \ Вася \ абв Мурманск\ 3245-весь \ Антон \ гра Москва \ 4829 - часть, 3829-часть \ Денис \ дла это лист 1 (что является месяцем январь) далее должны следовать еще 11 месяцев и последняя сводная таблица, где должны быть те же столбцы, только вместо № коробки должно быть просто перечисление сколько через данный город, конкретным человеком было провезено наполнителя, кол-во индексировать исходя из повторений по этим трем столбцам. вот как-то так я не могу сделать так называемый справочник, только хочу его сделать как массив, нет пока что времени изучать синтаксис справочника ((
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
18.08.2013, 12:52 | 39 |
Мне кажется, что эта проблема не проблема, на словаре всё решается легко и просто.
Но т.к. коммерческая тайна и файла нет - нет и решения
0
|
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
|
|
18.08.2013, 13:08 | 40 |
0
|
18.08.2013, 13:08 | |
18.08.2013, 13:08 | |
Помогаю со студенческими работами здесь
40
Как из стека int-ы загнать в массив? Как загнать массив записей в процедуру? Как загнать в массив строку текста по буквам? Создал многомерный массив как загнать в Комбобокс Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |