
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
23.03.2007, 15:19:33
|
|||
|---|---|---|---|
|
|||
Неполное транспонирование ...? |
|||
|
#18+
Господа, а каким образом посредством VBA выбрать ненулевые значения из одномерного диапазона (горизонтально лежащего) с одного листа и вставить в вертикально стоящий диапазон на другом листе? Например: на Лист1 в диапазоне А1:А5 числа: 3, 2, 0, 1, 0. на Лист2 вставить, например в диапазон C3:С5, значения 3, 2, 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.03.2007, 16:32:58
|
|||
|---|---|---|---|
Неполное транспонирование ...? |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.03.2007, 17:59:57
|
|||
|---|---|---|---|
|
|||
Неполное транспонирование ...? |
|||
|
#18+
Работает великолепно! А при переносе из горизонтально лежащего в вертикально стоящий диапазон отображаются почему-то только значения первого ненулевого элемента... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.03.2007, 00:18:55
|
|||
|---|---|---|---|
Неполное транспонирование ...? |
|||
|
#18+
Maksim1976А при переносе из горизонтально лежащего в вертикально стоящий диапазон отображаются почему-то только значения первого ненулевого элемента... Это потому что векторы исходного массива и ранга назначения не совпадают . Массив arr - одномерный, а одномерные массивы в VBA всегда (!) горизонтальны . Выхода два: - либо транспонируем исходный массив (arr) перед копированием - либо изначально создаем исходный массив (arr) как двухмерный Я предпочитаю первое: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.03.2007, 01:25:39
|
|||
|---|---|---|---|
|
|||
Неполное транспонирование ...? |
|||
|
#18+
Слов нет! It's working!!! А если в качестве исходного задан двухмерный массив, то его строки, насколько я понимаю, можно обрабатывать таким же образом? Только непонятно как к ним обращаться - посредством цикла ? В Range("A1:D3") указывать ((Cells(1,1),Cells(3,3))? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.03.2007, 01:35:40
|
|||
|---|---|---|---|
Неполное транспонирование ...? |
|||
|
#18+
Maksim1976А если в качестве исходного задан двухмерный массив, то его строки, насколько я понимаю, можно обрабатывать таким же образом? Только непонятно как к ним обращаться - посредством цикла ? В Range("A1:D3") указывать ((Cells(1,1),Cells(3,3))? Необязательно. Вот пример с двухмерным массивом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.03.2007, 01:54:27
|
|||
|---|---|---|---|
Неполное транспонирование ...? |
|||
|
#18+
Естественно, есть еще более короткий, но, при большом кол-ве данных, более медленный вариант: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.03.2007, 22:43:24
|
|||
|---|---|---|---|
|
|||
Неполное транспонирование ...? |
|||
|
#18+
Уважаемый KL (XL), с Вашей помощью накорябал приатаченный макрос. Вроде работает. Прошу высказать критические замечания. Вообще то, по настоящему, на один лист нужно собирать данные с 4 или 5 листов. Хорошо, хоть на всех этх листах диапазоны имеют одинаковое расположение и размер, отличаются только типы данных. Нужно просто вставить цикл по листам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=61&mobile=1&tid=2183245]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 322ms |

| 0 / 0 |
