Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/41: Рейтинг темы: голосов - 41, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 26

Чтение массивов разных размеров из Excel

02.07.2014, 21:48. Показов 8709. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрые люди. Помогите!!! Пишу прогу на ВБ в Вижуал Студио 2013. В листе эксель есть два столбика, они могут быть разных размеров, но начинаться всегда буду с одних и тех же ячеек (например А1 и Б1). При чем некоторые ячейки могут быть 0 в этих столбиках. Мне нужно их считать из Экселя через цикл, конечную ячейку указать как конец массива. Обработать и записать в соседние столбики. Не могу найти такой синтаксис для записи и считывания данных из экселя в цикле. По одному записывать в ячейке(естественно получается), не удобно, размер столбиков может быть разным, но друг с другом они по длине совпадают.

Я нашел только такое:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
'Добавить заголовки в строку 1
        oSheet = oBook.Worksheets(1)
        oSheet.Range("A1:C1").Value = Array("Order ID", "Amount", "Tax")
 
        'Передать массив на лист, начиная с ячейки A2
        oSheet.Range("A1").Resize(100, 3).Value = DataArray
 
 
        'TextBox1.Multiline = True
        oSheet.Range("B3").WrapText = True
        'TextBox1.Text = oSheet.Range("B3").value
        'Сохранить книгу и закрыть Excel
        oBook.SaveAs("C:\Book2.xlsx")
        oExcel.Quit()
НО ЭТО ОЧЕНЬ НЕ УДОБНО(УДОБНО ТОЛЬКО ДЛЯ ПАРЫ ЗНАЧЕНИЙ)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.07.2014, 21:48
Ответы с готовыми решениями:

Конкатенация массивов разных размеров
Здравствуйте, товарищи. Суть такова: есть два массива, например: a {1 , 5 ,4} b {2 , 2 } Нужно получить массив сложением элементов...

Метод выполнить в 11 разных потоках, соответственно для разных входных массивов
Здравствуйте, начал потихоньку разбираться в многопоточном программирование и не могу до конца разобраться. Допустим есть некий метод в...

Товары разных размеров
Делаю спортивный магазин, но вот столкнулся с проблемой: Например, я добавлю футбольную форму Барселоны. У покупателя будет возможность...

32
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
09.07.2014, 21:34
Студворк — интернет-сервис помощи студентам
CurrentRegion - это область указанной ячейки, ограниченная полностью пустыми строками/столбцами.
Поэтому там будет не одна ячейка, а большущий прямоугольник из ячеек.
Если конечно там вообще будут данные...
И если нам нужно например только 5 первых столбцов - берём Columns(1).Resize(, 5)

Ubound() - верхняя размерность массива.

По коду - вот из 10 и 12 явно одна строка лишняя.
И вообще - т.к. файл создаётся с нуля, то там нет данных, значит брать в массив и обрабатывать нечего.

Цитата Сообщение от k0styan Посмотреть сообщение
зачем проверять i на кратность 5
- а вот это кто писал?
Чтение массивов разных размеров из Excel
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 26
09.07.2014, 22:12  [ТС]
Спасибо, про МОД 5 я уже догадался))) У меня вышло все, но теперь есть некая проблема, мне надо что бы в каждой 5 ячейке столбика д1 была сумма по каждым 7 ячейкам столбика с1 д5=сумма(с1+с2+..+с7)/5 д10=сумма(с8+с9+..+с14)/5 и так далее
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
09.07.2014, 22:17
Ну так когда наступит МОД 5 - берёте и суммируете a(i-7,3)+a(i-6,3) и т .д. Или сразу в процессе можно собирать в переменную - только как-то не вижу логики - почему 7? И что делать на первой пятой строке?
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 26
09.07.2014, 22:25  [ТС]
Таких записей может быть 3000, мне надо как то в переменную вогнать. НА 7, это дней недели. Потому надо как то сделать, что бы в каждой пятой строчке была сумма за каждую неделю. 1 и 5 строка ? не понял
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
09.07.2014, 22:38
В каждой пятой за 7 - ну допустим. Что будете суммировать в первой пятой?
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 26
09.07.2014, 23:11  [ТС]
Ничего. у нас есть 2 столбика. Первый 2 входные данные, 3 расчетные данные, в каждой ячейке. 4 столбик, расчет ведется в каждой, ну пусть будет, 7 ячейке(для удобства) сумма по каждому блоку(каждые 7 дней) ячеек из 3-го столбика. Посмотрите на скрине формулу, и периодичность повторения для каждой 7 ячейки 4 столбика.
Миниатюры
Чтение массивов разных размеров из Excel  
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
09.07.2014, 23:20
Если дадите таблицу с данными и с кодом - завтра на досуге посмотрю.
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 26
09.07.2014, 23:42  [ТС]
Тем более, что это еще не все.Внутри пояснение
Вложения
Тип файла: rar Book2.rar (26.3 Кб, 4 просмотров)
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
10.07.2014, 00:19
Глянул файл - зачем там вообще
Visual Basic
1
2
3
4
5
6
7
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
 
        Set oExcel = CreateObject("Excel.Application")
        Set oBook = oExcel.Workbooks.Add
        Set oSheet = oBook.Worksheets(1)
Добавлено через 1 минуту
Чтоб наплодить лишних процессов?
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 26
10.07.2014, 21:46  [ТС]
Видимо да )) А что с там с каждой 7 строчко ? )
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
11.07.2014, 19:18
Не пойму я в чём разница между CurrentRegion и UsedRange . Следующие строки кода выделяют одно и то же..

Visual Basic
1
2
ActiveSheet.Range("A1").CurrentRegion.Select
ActiveSheet.UsedRange.Select
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
11.07.2014, 21:42
А Вы запишите что-нибудь куда-нибудь правее или ниже после пустого столбца или строки. Или закрасьте ячейки где-нибудь сбоку.
А так конечно разницы не будет, если например в новом файле заполнить только A1 и A2.
1
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 26
13.07.2014, 19:51  [ТС]
Доброго времени суток. Что то получается? А то у меня нет(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.07.2014, 19:51
Помогаю со студенческими работами здесь

Заголовок двух разных размеров
я хочу заменить строку: t=title ('M_{earth}'); на другой вариант- чтоб M был размером 20 а earth размером 10, возможно ли это? а то...

Динамические массивы разных размеров
Дан файл вида, например, такого: 9 7 5 -5 7 3 -6 9 2 1 13 6 2 -4 42 -13 3 0 5 8 -11 4 -11 3 8 -5 2 3 5 -3 9 3 5 -2 1 0 0 23...

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

Сложения матриц разных размеров
написал программу для сложения матриц, но только одинаковых размеров, что нужно переделать чтобы добавить матрицу 3х2 до 2х3? в таком...

Слайдер с изображениями разных размеров
Как правильно верстать слайдер с изображениями разных размеров? Допустим чтобы потом можно было легко подключить js, и получать ширину...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru