Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/33: Рейтинг темы: голосов - 33, средняя оценка - 4.85
 Аватар для Uskorenie
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102

Работа с полученным двумерным массивом Excel в VBA

15.03.2013, 14:07. Показов 7345. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую вас, уважаемые знатоки! Я долго пытаюсь что-то сделать с этой проблемой, но, все мои попытки "обламываются" на пол пути, хотя всё так здорово начиналось. У меня есть некоторый, полученный в результате работы стандартных Excel функций (например так =ЕСЛИ(A1:A10=ТРАНСП(B1:B10);1;0), двумерный массив значений, не привязанный к ячейкам (насколько я понял эти значения храняться в памяти). Размерность этого массива будет постоянно меняться, но, возможно, это не главное. Я бы с радостью применил все свои знания по встроенным функциям Excel и возможно не обращался бы к VBA, но встроенные функции бессильны. Так, например, у меня есть массив 10x10 (как в примере выше). Теперь мне нужно так его обработать, что бы, к примеру, проссумировать первый "столбец", вернуть значение (допустим значение_1), проссумировать второй "столбец" и вернуть значение_2 и т.д. В конечном итоге получить одномерный массив, состоящий из индивидуально проссумированных "столбцов" массива. Такое можно сделать, причём я добился этого просто эксперементируя, т.е. описания того что я сделал, скорее всего не существует. Как бы то не было, это работает:
{=СУММ(ИНДЕКС(ЕСЛИ(A1:A10=ТРАНСП(B1:B10) ;1;0);;ИНТЧИСЛРЯД))}
где ИНТЧИСЛРЯД массив, типа {1;2;3;4;5;6...}
Но, я бы и не "парился", если бы мне не нужно было большего, например найти не сумму, а, к примеру наибольший первый из каждого столбца

Иными словами:
Есть массив
1 89 8
5 54 5
48 12 9
15 54 4
68 11 2

Сумма первого столбца: 137
Сумма второго: 220
Сумма третьего: 28

Таким образом возвращается одномерный массив:
137
220
28

Тоже самое, если мне будет необходимо найти наибольший (или любая другая функция):
Наибольший первого столбца: 68
Наибольший второго: 89
Наибольший третьего: 9

Таким образом возвращается одномерный массив:
68
89
9

1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2013, 14:07
Ответы с готовыми решениями:

VBA Excel. Работа с массивом
Найти произведение второго и четвертого отрицательных элементов массива

Работа с массивом, полученным при запросе mysql_fetch_array($result)
Здравствуйте! Подскажите пожалуйста, как работать с такими массивами ( найти максимум, минимум, количество членов массива). До этого...

Работа с двумерным массивом
Здравствуйте! Задача стоит так: разработать класс, который имеет поле двумерный массив (матрицу) целых чисел и реализуйте методы работы с...

23
 Аватар для Uskorenie
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
18.03.2013, 17:51  [ТС]
Студворк — интернет-сервис помощи студентам
Если интересно, то в приложении все мои ходы по решению проблемы, однако проблема была решена мною лишь частично с помощью стандартных функций (имена SUMNETPORT и SUMTELPORT). Благодяря Казанскому я сдвинусь (ну. или попробую дёрнуться ) с мёртвой точки.

P.S.: Это описание я делал для себя, поэтому не критикуйте сильно
Вложения
Тип файла: pdf 1.pdf (479.4 Кб, 13 просмотров)
0
 Аватар для Uskorenie
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
19.03.2013, 15:28  [ТС]
Скажите, а функция CallByName, вызывающая методы объекта Application в виде формул листа, может работать только с теми функциями, которые могут принимать от одного аргумента, типа Sum, Max и т.д.? А как же те, которым требуется 2 и больше обязательных аргументов, например Sumif? Я очень прошу прощения за свою чрезмерную назойливость, но, к сожалению, справка по CallByName довольно небольшая, а все мои эксперименты вызывают ошибку 438.
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
20.03.2013, 13:54
Цитата Сообщение от Uskorenie Посмотреть сообщение
А как же те, которым требуется 2 и больше обязательных аргументов, например Sumif?
Перечисляйте аргументы через запятую, например
Visual Basic
1
x=CallByName(Application, "sumif", VbGet, range("A1:A10"),"<5",range("B1:B10"))
Учтите, что некоторые функции листа, в частности СУММЕСЛИ, работают только с диапазонами, но не с массивами. Проверяйте работу функций на листе.
1
 Аватар для Uskorenie
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
20.03.2013, 19:21  [ТС]
Очень ценное замечание. Огромное спасибо!

Добавлено через 5 часов 17 минут
Цитата Сообщение от Казанский Посмотреть сообщение
СУММЕСЛИ, работают только с диапазонами, но не с массивами.
А есть ли возможность "превратить" массив в виртуальный диапазон? Ну, что-то в этом роде:
Visual Basic
1
2
Dim x As Range
set x = CreateObject("Application.Range")
А затем уже переменную "X" использовать? Хотя... этот Range получится каким-то безадресным...
Вообще, для полного понимания мира VBA в Excel очень не достаёт такой информации, как какие функции листа работают только с диапазонами, а какие функции листа нельзя вызвать из VBA, потому, что они дублируются с базовыми функциями VBA, например Sqr. Как-то без этого я всё больше и больше теряться начинаю Кроме того мне столо столько известно о вызовах функций листа, что теперь мне сложно выбирать без конкретики отличий в их действиях, например WorksheetFunktion, Evaluate и теперь вот ещё один вариант - CallByName... Правда, это вызывает всё больший и больший интерес
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.03.2013, 19:21

Работа с двумерным массивом
Приветствую, нуждаюсь в вашей помощи! Проблема заключается в том, что нужно заменить расчетную характеристику в данном коде, сейчас здесь...

Работа с двумерным массивом
Как реализовать двумерный массив с помощью ДСЧ и вручную и выполнить эти действия? 1)Добавить после каждого четного элемента элемент со...

Работа с двумерным массивом
По работе необходимо сравнивать две таблицы данных на одном листе Excel. Нашёл библиотеку Apache POI, с помощью которой вытащил все данные...

Работа с двумерным массивом
Задача. Ввести целочисленный двумерный массив , вывести его. Найти k– количество чётных элементов на главной диагонали. Далее найти...

Работа с ДВУМЕРНЫМ массивом
как удалить строки из массива в нужном диапазоне? к примеру: есть матрица 5*5 я уже присвоил переменным строки 3 и 5, после удаления...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru