Eurotehnik.ru

Бытовая Техника "Евротехник"
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Решения, условия, алгоритмы if, then, switch в VBA Excel

Решения, условия, алгоритмы if, then, switch в VBA Excel

Принятие решений позволяет программистам контролировать поток выполнения сценария или одного из его разделов. Исполнение управляется одним или несколькими условными операторами.

Ниже приведен общий вид типичной структуры принятия решений, найденной на большинстве языков программирования.

Решения, условия, алгоритмы if, then, switch в VBA Excel

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

Примeр 2

Циклы VBA помогают создавать различныe макросы в Excel.

Циклы VBA помогают создавать различныe макросы. Прeдположим, что имeeтся функция y=x + x2 + 3×3 — cos(x). Трeбуeтся создать макрос для получeния ee графика. Сдeлать это можно только, используя циклы VBA.

За начальноe и конeчноe значeниe аргумeнта функции бeрут x1=0 и x2=10. Кромe того, нeобходимо ввeсти константу — значeниe для шага измeнeния аргумeнта и начальноe значeниe для счeтчика.

Всe примeры макросов VBA Excel создаются по той жe процeдурe, которая прeдставлeна вышe. В данном конкрeтном случаe код выглядит, как:

Do While x1 0 Then Cells(1, 1).Value = 1

If x=0 Then Cells(1, 1).Value = 0

IF,THEN,ELSE–служебные неизменяемые слова, в угловых скобках текст пользователя, это то, что вы пишете в соответствии с заданием, в квадратных скобках необязательная часть, текст может отсутствовать. Такая форма обычно используется в случае простых действий, например, при вычислении модуля числаy=х=abs(s) можно использовать следующий оператор:

IF x > 0 THEN y = x ELSE y = -x

2) В несколько строк. В этом случае условный оператор обязательно заканчивается утверждением “ENDIF”

Такая форма используется при сложных вычислениях, например, при вычислении корней квадратного уравнения. Пусть надо найти корни уравнения a*x 2 +b*x+c= 0. Как известно в случае еслиb 2 -4*a*c≥ 0, то корни вычисляются по формуле
, еслиb 2 -4*a*c≤ 0, то корней в области действительных чисел нет. Условный оператор, реализующий этот алгоритм, выглядит следующим образом:

Читайте так же:
Можно ли добавить видео в инстаграмм

IF b^2 -4*a*c>= 0 THEN

X1 = (-b + (b^2 — 4*a*c)^(1/2)) / (2*a)

X2 = (-b + (b^2 + 4*a*c)^(1/2)) / (2*a)

X1 = “ РЕШЕНИЯ НЕТ”

X2 = “ РЕШЕНИЯ НЕТ”

Список «клиент-суммарную стоимость его покупок» за все время ведения БД.

VBA Excel результат запроса

Макрос может выглядеть так:

Private Sub query20()
Dim elem As Operac, A As Operac
Dim C As New Collection
Dim i As Integer
Dim j As Integer

myScan ‘сканирование БД для определения последней строки

j = nRow
‘вывод заголовков полей для данного запроса
Cells(j, nCol) = «Клиент»
Cells(j, nCol + 1) = «Сумма всех покупок»

Примеры

1. С помощью макросов можно копировать данные из одного файла в другой.

Sub CopyFiletoAnotherWorkbook()
‘Copy the data
Sheets( «Example 1» ).Range( «A1:C5» ).Copy
‘Create a new workbook
Workbooks.Add
‘Paste the data
ActiveSheet.Paste
‘Turn off application alerts
Application.DisplayAlerts = False
‘Save the newly file. Change the name of the directory.
ActiveWorkbook.SaveAs Filename:= «C:EXAMPLE 2.xlsx»
‘Turn application alerts back on
Application.DisplayAlerts = True
End Sub

2. С помощью макросов можно удалять дубли. Ранее мы писали о том, как это сделать без помощи VBA.

Sub DelDups_OneList()
Dim iListCount As Integer
Dim iCtr As Integer

‘ Turn off screen updating to speed up macro.
Application.ScreenUpdating = False

‘ Get count of records to search through.
iListCount = Sheets( «Sheet1» ).Range( «A1:A100» ).Rows.Count
Sheets( «Sheet1» ).Range( «A1» ). Select
‘ Loop until end of records.
Do Until ActiveCell = «»
‘ Loop through records.
For iCtr = 1 To iListCount
‘ Don’t compare against yourself.
‘ To specify a different column, change 1 to the column number.
If ActiveCell.Row <> Sheets( «Sheet1» ).Cells(iCtr, 1).Row Then
‘ Do comparison of next record.
If ActiveCell.Value = Sheets( «Sheet1» ).Cells(iCtr, 1).Value Then
‘ If match is true then delete row.
Sheets( «Sheet1» ).Cells(iCtr, 1).Delete xlShiftUp
‘ Increment counter to account for deleted row.
iCtr = iCtr + 1
End If
End If
Next iCtr
‘ Go to next record.
ActiveCell.Offset(1, 0). Select
Loop
Application.ScreenUpdating = True
MsgBox «Done!»
End Sub

Читайте так же:
Как в wordpad пронумеровать страницы

Макрос находит повторяющиеся элементы в диапазоне А1:A100 и удаляет их. Важная особенность макроса — необходимость отсутствия в массиве пустых ячеек. Если список содержит пустые ячейки, необходимо отсортировать данные в возрастающем порядке, чтобы все пустые ячейки отображались в конце списка.

3. С помощью макросов можно сравнивать два списка и удалять повторяющуюся информацию.

Следующий пример макроса сравнивает один (ключевой) список с другим и удаляет повторяющиеся элементы во втором списке, которые находятся в главном списке. Первый список находится на листе Sheet1 в диапазоне А1:A10. Второй список располагается на Лист2 в диапазоне А1:A100. Для того, чтобы воспользоваться макросом выберите любой лист и затем запустите макрос.

Sub DelDups_TwoLists()
Dim iListCount As Integer
Dim iCtr As Integer

‘ Turn off screen updating to speed up macro.
Application.ScreenUpdating = False

‘ Get count of records to search through (list that will be deleted).
iListCount = Sheets( «Sheet2» ).Range( «A1:A100» ).Rows.Count

‘ Loop through the «master» list.
For Each x In Sheets( «Sheet1» ).Range( «A1:A10» )
‘ Loop through all records in the second list.
For iCtr = 1 To iListCount
‘ Do comparison of next record.
‘ To specify a different column, change 1 to the column number.
If x.Value = Sheets( «Sheet2» ).Cells(iCtr, 1).Value Then
‘ If match is true then delete row.
Sheets( «Sheet2» ).Cells(iCtr, 1).Delete xlShiftUp
‘ Increment counter to account for deleted row.
iCtr = iCtr + 1
End If
Next iCtr
Next
Application.ScreenUpdating = True
MsgBox «Done!»
End Sub

Возможности VBA достаточно обширны. Мы привели лишь несколько примеров, однако вы можете изучить тему более детально самостоятельно, записавшись на курс «Excel Academy», просматривая обучающие видео и наши статьи.

Читайте так же:
Можно ли использовать подсолнечное масло вместо смазки

Об одном хитром макросе для гигантской таблицы рассказывал Александр Вальцев, CEO SF Education, в видео.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector