Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 28.04.2020, 22:23   #1
Mr.Ibriev
 
Регистрация: 20.04.2020
Сообщений: 6
По умолчанию Помогите пожалуйста, написать скрипты в Excel VBA!

Добрый вечер. Помогите, пожалуйста, написать скрипты, если вам не сложно!


Тема : VBA-2. Работа с программами


Рассмотрим понятие Range (диапазон).
Допустим мы хотим некоторую прямоугольную область ячеек электронной таблицы MS Excel обозначить именем (например, «a» ), кроме того, нужно обеспечить запись или считывание значений из этой области, указывая имя области (т.е. «а»), номер строки и номер столбца ячейки. При этом отсчет номеров строки и столбца будет вестись от верхнего левого угла этой области, а не от верхней левой ячейки листа MS Excel (которая, как извест-но, имеет адрес «A1»). Все это делается в среде VBA с помощью операторов программы, которую мы сейчас рассмотрим ниже.

Пример 1.
Вычислим сумму чисел, хранящихся в диапазоне ячеек (B7:D9) с помощью следующей программы 1.на VBA :
Dim a As Range ‘оператор Dim задает имя диапазона (т.е. «а»)
Set a=Range(“B7:D9”) ‘оператор Set определяет место его нахождения
S=0 ‘обнуление S перед началом расчета
For i=1 To 3 ‘начало внешнего цикла
For j=1 To 3 ‘начало внутреннего цикла
S=S+a(i,j) ‘рекуррентное суммирование внутри цикла
Next j ‘окончание внутреннего цикла
Next I ‘окончание внешнего цикла
MsgBox(S) ‘вывод результата

Примечание. a(i,j) – элементы диапазона, подлежащие суммированию.
Вывод: согласитесь, что эта программа «понятнее и ее легче написать», чем программу без этих Range (кстати, можете попробовать).
Испытайте представленную программу для примера 1. Перед стартом программы введите следующие значения в ячейки диапазона (B7:D9):
1 0 -1
2 3 -3
3 7 -2

Пример 2.
Выполним сложение двух матриц (матрица А, матрица В),хранящихся в диапазонах ячеек (В11: Е13) и (В15: Е17 . Результат поместить в матрицу С в диапазоне (В19: Е21)
1 0 2 4
-2 3 0 5
5 2 3 -1
4 5 3 1
7 2 5 0
2 0 2 6

Матрица А (В11: Е13) Матрица В (В15: Е17)
Суммирование выполним с помощью следующей программы 2. на VBA :
Dim a As Range
Set a=Range(“B11:E13”)
Dim b As Range
Set b=Range(“B15:E17”)
Dim c As Range
Set c=Range(“B19:E21”)
For i=1 To 3: For j=1 To 4
c(i,j)=a(i,j) + b(i,j)
Next j:Next i

Испытайте представленную программу для примера 2. Перед стартом программы введите исходные значения в ячейки диапазонов (B11:E13) и
(B15:E17).

Пример 3.
Напишем программу 3., расставляющую числа по возрастанию справа налево в каждой строке матрицы из двух строк в диапазоне (B20:G21)
Dim a As Range
Set a = Range("b20")
For i = 1 To 2
For j = 1 To 5
For k = j + 1 To 6
If a(i, j) < a(i, k) Then GoTo 10
w = a(i, j): a(i, j) = a(i, k): a(i, k) = w
10 Next k
Next j
Next i

Введите следующие данные в диапазон ячеек (B20:G21) электронной таблицы, затем стартуйте программу:

2 1 4 3 6 5
20 10 40 30 60 500

Убедитесь, что произошла сортировка чисел в строках таблицы.

Используя Range (диапазон), составьте и испытайте программы, условия к которым записаны в следующих примерах :

Пример 4.
Программа 4 производит сложение двух матриц (матрица А, матрица В),
хранящихся в диапазонах ячеек (B24: D26) и (F24:H26) . Результат поместить в матрицу С в диапазоне (В28: D30)

4 5 0
1 3 2
7 2 5
Матрица А, диапазон (B24:D26)

1 0 5
4 2 3
-2 3 0
Матрица В, диапазон (F24:H26)
Примечание. Справку о сложении матриц можно получить у поисковика.
Сложение матриц производится по формуле: Cij=Aij + Bij , т.е. попарно складываются элементы двух матриц с одинаковыми индексами и результат сложения записывается в третью матрицу в клетку с такими же индексами. Например, в нашем случае, числа из верхних левых углов матриц А и В (это 4 и 1)складываются и сумма (это 5) записывается в клетку (тоже верхний левый угол) матрицы С.

Пример 5.
Программа 5 производит сложение тех же двух матриц (матрица А, матрица В), что и в примере 4, но помещает результат в матрицу D в
диапазон (В32: D34) . При этом добавляется условие: при вычислении суммы очередной пары элементов с одинаковыми индексами Аij и Bij , если Aij>Bij, то сумма Aij+Bij записывается в третью матрицу на место элемента Dij с противоположным знаком. Если же условие Aij>Bij не выполнено, то сумма знак не меняет. Например, Аij=1 и Bij=4, условие не выполнено, поэтому сумма равна 5 и знак не меняет. Другой пример, Аij=3 и Bij=2, условие выполнено, поэтому сумма 5 меняет знак и в матрицу D записывается -5.

Пример 6.
При выполнении программы 5 в диапазоне (С36:Н37), содержимое двух строк меняется местами.

1 2 4 3 5 6
0 1 1 1 0 0

Пример 7.

1 10 100
2 20 200
3 30 300
4 40 400
5 50 500
6 60 600

При выполнении программы 7 в диапазоне (D39:F44), содержимое столбцов
(D39:D44) и (F39:F44) меняется местами.

Пример 8.
При выполнении программы 8 в диапазоне (H39:L41) в каждой строке
расположить числа по убыванию слева направо.

Пример 9.
При выполнении программы 9 в диапазоне (C46:E51) в каждом столбце
расположить числа по убыванию сверху вниз.

Пример 10.
При выполнении программы 10 в диапазоне (H46:K50) все нечетные
числа заменить нулями

Пример 11.
При выполнении программы 11 в диапазоне (B53:F55) у всех нечетных
чисел заменить знак на противоположный

Пример 12.
При выполнении программы 12 в диапазоне (H52:I56) все нечетные
числа удвоить, а четные - разделить на 2


Пример 13.
При выполнении программы 13 задается диапазон (B58:F61) . До начала счета по программе в верхней строке диапазона (№ 58 строка MS Excel) записываются пять целых чисел (например, 1, 2, 3, 4, 5). При исполнении программы анализируется каждое число верхней строки диапазона.
Если это число четное, то во второй строке диапазона записывается значение этого числа в степени 2, если число нечетное – то в третьей строке записыва-ется значение этого же числа в степени 3. Кроме того, в четвертой строке для каждого числа из первой строки (и в том же столбце, что и число) записывается остаток от деления числа на 2 (используется для определения его четности).

Испытайте работу всех программ для примеров 1 - 13. Перед стартом программ вводите необходимые исходные данные в ячейки MS Excel.

Тексты всех программ запишите в документе MS Word
Mr.Ibriev вне форума
Старый 29.04.2020, 09:20   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

https://www.programmersforum.ru/forumdisplay.php?f=29
Опять ошибочка с разделом...
digitalis вне форума
Старый 30.04.2020, 08:02   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Ввиду возросшей активности студентов-бездельников
темы, не содержащие своих наработок, будут закрываться.


В этом разделе форума помогают разобраться в Вашем решении, а не штампуют лабы одну за другой.

Нет желания делать работу самостоятельно - обращайтесь в раздел Фриланс (там Вам всегда помогут, но не бесплатно)
Нет желания платить - выкладывайте свои наработки, и говорите, что конкретно у Вас не получается. В этом случае вы наверняка получите помочь, и ждать её придётся совсем недолго.

Впрочем, есть ещё раздел Помощь студентам - если хочется халявы, а денег жалко, - можете обратиться туда (есть небольшой шанс, что там кто-нибудь решит ваши задачки)

Ну а если наработок нет, а вы все же надеетесь получить готовое решение от профессионалов, - создавайте новую тему, и сразу указывайте цену, которую Вы готовы заплатить за решение.
EducatedFool вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста. Задание такое: написать макросы для перевода числа в строку, для вывода строки на терминал, для остановки программы. Код приведен ниже. Укажите пожалуйста что Нести Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 01.11.2016 09:26
Помогите,пожалуйста,с Excel 777Ната Microsoft Office Excel 4 14.02.2016 13:50
Помогите пожалуйста написать макрос для Excel fafolo4ka Microsoft Office Excel 1 22.12.2009 19:17
ВПР в excel. Помогите пожалуйста! Евгения88 Microsoft Office Excel 3 09.12.2009 12:28
Помогите по Excel пожалуйста лопух Microsoft Office Excel 2 04.11.2007 17:25