749 / 460 / 50
Регистрация: 13.05.2012
Сообщений: 958
1

Как вывести всю строку(столбец) в массиве

02.08.2013, 21:34. Показов 10205. Ответов 38
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет Всем!
Есть матрица, например
1 4 7 10
2 5 8 11
3 6 9 12
Мне нужно вывести, например весь первый столбец
1
2
3
или всю строку 1 4 7 10
Пробую вот так
Visual Basic
1
2
3
4
5
Sub mtx3()
Dim arr, c
arr = [a1].CurrentRegion
c = arr(1)
End Sub
выдает ошибку.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2013, 21:34
Ответы с готовыми решениями:

Необходимо перемножить строку на столбец двумерного массива и результат вывести в одномерном массиве
Необходимо перемножить строку на столбец двумерного массива и результат вывести в одномерном...

Как поменять местами 1-ю строку и 1 столбец в двухмерном массиве?
int tmp; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length;...

хранимая процедура (MIN), как вывести всю строку, а не только 1 данное???
Привет, есть БД. Надо написать хранимую процедуру, чтобы выводилась(ись) строки со всеми данными,...

Как вывести столбец в двумерном массиве?
Я пытаюсь вывести столбец, в котором наибольшее кол-во элементов со значениями больше заданного...

38
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
03.08.2013, 10:26 21
Author24 — интернет-сервис помощи студентам
Сергей, спасибо. Нужно запомнить как применять этот Index
Сравнил скорость - медленнее, но всего где-то на 20%.
Но конечно на практике (когда пишешь не для себя) редко можно быть уверенным, что данных всегда будет мало.
Поэтому надёжнее перебор.
И быстрее
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.08.2013, 10:41 22
Ну еще и я..., т.к. про "действительно" ничего. Побегал по глобус, может сразу и не то нашел (или нашел не то ), но:
The dependency limits that enable smart recalculation instead of full calculation are now limited only by available memory instead of 8,000 cells dependent on a single area and 64,000 areas having dependencies.
И, практически, там-же:
Full column references are now allowed, and the limit on array formulas referring to another worksheet is increased from 65,000 to available memory.
Ссылки:
http://msdn.microsoft.com/en-u... e.14).aspx
http://msdn.microsoft.com/en-u... e.14).aspx
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
03.08.2013, 10:54 23
Проверил на 2007 (когда скорость сравнивал) - если массив 65536 строк, то index выпадает в ошибку.
Ну а то, что нашли - думаю относится к формулам листа на листе.
1
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.08.2013, 11:02 24
Да, к листу. А вот про VBA - и так спрашиваю, и так - пока глухо. Но, думаю, Ваша проверка уже что-то значит. Странно. Я этого даже не подозревал (но у меня и таких таблиц не было, не больше 50000 строк.)
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
03.08.2013, 11:05 25
Так проверить ведь легко - растянули массив на >65535 строк, запустили код - ошибка.
Очистили 65536-ю строку - работает!
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.08.2013, 11:27 26
Почитать хочуууу! Что б не как заочник, с умным видом: "Я не теоретик, я практик".
Вот пока нашел, но это из форума, там еще есть, но туманно:
VBA array size is limited to 65535 when the file version is prior 2007 (file type end with xls). If you're working on a pre-2007 excel file in excel 2010 environment, yes, the array will still imited to 65535 rows.
Еще побегаю.
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
03.08.2013, 11:32 27
По-моему "VBA array size is limited to 65535" фигня. Думаю можно создать пустой массив и больше, и забить в него данные (из текста, или из нескольких листов/массивов в цикле).
Другое дело что с листа конечно за раз так много взять неоткуда
Но не проверял, и проверить сейчас негде - нет дома 2003.
Но кажется на работе читал в массив текст и поболее 65535 строк.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.08.2013, 11:44 28
Странно, пока все кивают на память.
VBA Memory Limits
32-bit versions of Excel seem to have a memory limit of about 500MB for VBA (arrays, code etc).
Excel 2010 64 bit seems to have a memory limit of about 4GB for VBA.
I do not know if these limits are reduced if you also have large workbooks open at the same time as the VBA.
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
03.08.2013, 12:00 29
Ну я и миллион строк на 32-bit versions of Excel через массив обрабатывал - помню словарь заполнялся 30 секунд.
Просто у меня нет другой версии
Но думаю упрётся в предел памяти, если будет много столбцов - бывало такое, что висло при большом объёме.
Значит есть смысл переходить на 2010 - но неохота систему переставлять... Обойдусь пока так.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.08.2013, 12:13 30
Нет хорошего без плохого. Кучу интересного начитался теперь. Но все-таки ищу про VBA + Formulas, чтоб: "Это кирпич, И ВСЕ!" Как Ваша ссылка на integer и long. Для меня это был переворот в мозгах.

Добавлено через 5 минут
Таааак! А это уже для тех, кто криво смотрит на Dictionary:
In Excel 2007, the AdvancedFilter, which should have been the way to go, seems flakey under certain conditions. I used dictionaries and that worked well to filter out items in one column that were present in another column.
0
1702 / 189 / 19
Регистрация: 20.11.2011
Сообщений: 281
03.08.2013, 12:13 31
Да. В 2010 тоже. И скорей всего и в 2013(у самого нету 2013, не пробовал).
1
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.08.2013, 12:21 32
To kuklp. А у Вас нет какой-то "официальной" сылки ( про vba formulas rows limit)? Редко такое бывает, но нахожу все, но не совсем то...
0
1702 / 189 / 19
Регистрация: 20.11.2011
Сообщений: 281
03.08.2013, 12:27 33
Нету. Да я этим и не заморачивался, как видимо и спецы из мелкософта. Было в 2003 65536 строк так и осталось в этом аспекте. Не взирая, что строк уже за миллион. Я сам удивился, когда еще в 2007 наткнулся на эти грабли, а потом проверив в 2010, досадно крякнул и принял, как есть
1
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.08.2013, 12:33 34
Уже и сам вижу. Вот здесь интересно, там и про отсутствие доков, и про Transpose:
http://answers.microsoft.com/e... 7309c26883
1
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
03.08.2013, 12:42 35
Да уж, transpose, чтоб потом redim preserve... Это я по ссылке почитал, но не тщательно до конца
Зачем такое издевательство?
Есть ведь куча других путей - да хоть собрать номера в коллекцию, затем создать нужный массив и переложить в него - это если строк много, а памяти мало.
Я обычно сразу создаю аналогичный массив и заполняю его, хвост потом отсекаю при выгрузке - дёшево и сердито.
2
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.08.2013, 12:43 36
Да это не для Вас!!! Это так, к общему...
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
03.08.2013, 12:52 37
Да это так, к слову... Просто не понял необходимость таких действий. Перечитал - чел хочет дополнять массив строками. Вообще конечно еслиб Redim Preserve принимал параметры, куда наращивать - это было бы очень хорошо. Или было бы Redim PreserveH и Redim PreserveV - но MS такого почему-то не сделали
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.08.2013, 12:57 38
Так, к слову, посмеяться! Вычитал.
Рекламация, возврат некачественного. Готовили женщины. Хорошие пачки позначали "Х", плохие - "П". Отгружали мужчины. Прочитали по своему. Дальше догадайтесь, что отправили....
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
03.08.2013, 13:04 39
Кстати про Redim Preserve - если бы просто добавляло строки, как например в коллекцию-словарь - можно было бы использовать.
Так ведь нет - нужно создать новый массив и всё переложить! В сад...
1
03.08.2013, 13:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2013, 13:04
Помогаю со студенческими работами здесь

Вывести не всю таблицу умножения, а только заданный столбец
Нужно вставить в программу ввод строки (например, 3 на 2) и чтобы программа выводила не всю...

Дана строка. Если скобки расставлены правильно, то вывести число 1. В противном случае вывести всю строку
Дана строка, содержащая несколько круглых скобок. Если скобки расставлены правильно (то есть каждой...

Как разбить строку на отдельные слова и вывести их в столбец А активного рабочего листа в порядке возрастания их длины
Дана строка символов,разделенных пробелами.Разбить строку на отдельные слова и вывести их в столбец...

Указатель на строку: как выводить не всю строку целиком, а конкретную букву
Есть программка: #include<iostream> using namespace std; void fn_str1(int i,string str1,char *p)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru