|
|
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
Подскажите, как проще преобразовать элементы массива? Есть MyArray(1 To Cnt). Элементы MyArray - строковые величины, как-то: MyArray(1) = ", session duration: 2484 ms." MyArray(2) = ", session duration: 5484 ms." MyArray(3) = ", session duration: 1000 ms." Нуна: создать новый массив, элементы которого - integer. Например MyArray(1) = 2484 MyArray(2) = 5484 MyArray(3) = 1000 Есть варианты? Можно, конечно, записать макрос "Текст по столбцам" и поглядеть как это делает VBA, но не хотелося в рабочей книге плодить промежуточные таблицы с массивами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2007, 15:36:28 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2007, 16:32:24 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
Хех! :) программисты жгут :) Я ж имел ввиду - есть ли хоть один вариант решения. А тут целых два. Подозреваю, что не единственные. Но! Спасибо человеческое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2007, 16:46:45 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
evgenius_bХех! :) Подозреваю, что не единственные. Но! Не единственные, но они мало чем отличаются, например Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2007, 17:28:45 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
В зависимости от того, где будет применяться результирующий массив, есть еще вариант получения значений ввиде строковых величин, но зато очень быстро: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2007, 18:50:56 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
Я так пробывал у меня почему то не получилось. Вообще не смог разобраться как можно массивы в формулы запихнуть чтобы не в цикле? И ещё почему нельзя массивы прировнять Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2007, 20:24:32 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
DeggasadЯ так пробывал у меня почему то не получилось. Вообще не смог разобраться как можно массивы в формулы запихнуть чтобы не в цикле? Ну здесь, вобщем, ответ в моем примере: это должны быть функции листа поддерживающие массивы и доступные через коллекцию WorksheetFunction, функции VBA и математические операторы не подходят. И массив, которому присваиваешь,должен быть динамическим. DeggasadИ ещё почему нельзя массивы прировнять Код: plaintext Почему нельзя? Можно. Только опять-таки массив, которому присваиваешь, должен быть динамическим: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2007, 23:15:16 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
Запутался и в справке что-то не найду. Мелочь вроде... Если объвляю переменную Код: plaintext Код: plaintext Есть предположение, что через функцию рабочего листа сразу массив возвращается, а если приравнивать, то по одному значению обрабатывает и поэтому первый раз не проходит ведь после первого значения это ещё не массив. Но не знаю правильно ли я думаю? И ещё что такое динамический массив? я почти что знаю, но всё таки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2007, 08:53:51 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
DeggasadЗапутался и в справке что-то не найду. Мелочь вроде... Если объвляю переменную Код: plaintext Код: plaintext Есть предположение, что через функцию рабочего листа сразу массив возвращается, а если приравнивать, то по одному значению обрабатывает и поэтому первый раз не проходит ведь после первого значения это ещё не массив. Но не знаю правильно ли я думаю? И ещё что такое динамический массив? я почти что знаю, но всё таки... Код: plaintext 1. 2. 3. 4. 5. 6. 7. Динамический массив - это тот, размеры которого заранее не определены и его тип Variant. Например: Объявление переменной МассивDim arrMyArray(1)Не динамический Dim arrMyArray(1 To 20) As LongНе динамический Dim arrMyArray()Динамический Dim arrMyArrayДинамический KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2007, 14:32:11 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
авторДинамический массив - это тот, размеры которого заранее не определены и его тип Variant. это неверное определение. Динамический массив - это тот, который был создан оператором ReDim или определение которого в утверждении Dim не содержало указаний на размерность массива: ReDim MyArray1(-1 to 121) as Currency Dim MyArray2() As String И то и другое предопределяет динамический тип массива. ---- Спасибо за указание возможности использовать WorksheetFunctions напрямую от application я об этом не знал. Есть ли в таком использовании какая-то плата за производительность? Если можно, еще вопрос про Excel На форуме часто проскакивает использование оператора -- в формулах Excel Где можно прочитать о работе и правилах применения оператора -- ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2007, 00:24:03 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
бабайэто неверное определение. Динамический массив - это тот, который был создан оператором ReDim или определение которого в утверждении Dim не содержало указаний на размерность массива: ReDim MyArray1(-1 to 121) as Currency Dim MyArray2() As String И то и другое предопределяет динамический тип массива. Пожалуй насчет Variant я погорячился :-) бабайСпасибо за указание возможности использовать WorksheetFunctions напрямую от application я об этом не знал. Есть ли в таком использовании какая-то плата за производительность? Нет, только надо иметь ввиду это: Данные из диапазона - в цикл для ADO бабайНа форуме часто проскакивает использование оператора -- в формулах Excel Где можно прочитать о работе и правилах применения оператора -- ? Это просто повтор оператора - (минус). Он служит для форсированного превращения нечисловых величин в их числовой эквивалент, если таковой имеется. Например: --ИСТИНА=1 --ЛОЖЬ=0 --{ИСТИНА;ЛОЖЬ;ИСТИНА}={1;0;1} --"234"=234 --"2007-08-26"=26/8/2007 и т.д. см. также: http://www.mcgimpsey.com/excel/formulae/doubleneg.html http://www.xldynamic.com/source/xld.SUMPRODUCT.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2007, 02:57:53 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
2 KL (XL) спасибо за разъяснения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2007, 21:45:36 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
че то я снова потерялся в мире VBA. Код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. В одном проекте работает, а в другом выдает ошибку: Wrong number of arguments or invalid property assignment (Error 450) Одновременно открыты 2 проекта, попеременно запускаю код. В самом нужном проекте результат - Error 450. Что можно сделать? Что такое "Set the Index property to a nonzero value in the control's property sheet or property window at design time." (взято из справки по ошибке). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 14:20:51 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
ругается вот на эту строку MyArrayNew(n) = Application.Index(Split(MyArray(n), " "), 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 14:22:03 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
сорри - на такую: MyArrayNew(i) = Application.Index(Split(MyArray(i), " "), 4) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 14:23:19 |
|
||
|
hi all, преобразовать элементы массива
|
|||
|---|---|---|---|
|
#18+
а если убрать из поекта вот этот макрос, то все работает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Бред какой-то. Этот модуль рабочий и нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 14:36:22 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34758229&tid=2182392]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 418ms |

| 0 / 0 |
