
Вопрос 23
В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun1 (вставьте нужные операторы в заголовки уже созданной функции), которая вычисляет выражение по формуле:
(1-x)^2
fun1 = ----------
2 + 3x
Ответ: - 4,75
Тест 5.2-5.3
1) Какое значение получит переменная S после выполнения группы операторов VBA:
S = 1
For i = 2 To 5 Step -2
S = S - i
Next i
Ответ: 1
Какое значение получит переменная S после выполнения группы операторов VBA:
S = 1
For i = 5 To 2 Step 2
S = S + i
Next i
Ответ: 1
2) Дана последовательность операторов VBA:
x = 2
While x > 4
x = x + 1
Wend
Определить значение переменной x после их выполнения
Ответ: 2
3) Дана последовательность операторов VBA:
x = 2
While x < 4
x = x + 1
Wend
Определить значение переменной x после их выполнения
Ответ: 4
6) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=2^2-4^2+6^2-...+30^2.
Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Решение:
Public Function fun4()
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
s1 = 0
i1 = 2
While i1 <= 30
s1 = s1 + i1 ^ 2
i1 = i1 + 4
Wend
s2 = 0
i2 = 4
While i2 <= 28
s2 = s2 + i2 ^ 2
i2 = i2 + 4
Wend
fun4 = s1 - s2
End Function
Ответ: 672
7) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=2^2-3^2+4^2-...+20^2.
Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Решение:
Public Function fun4()
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
s1 = 0
i1 = 2
While i1 <= 20
s1 = s1 + i1 ^ 2
i1 = i1 + 2
Wend
s2 = 0
i2 = 3
While i2 <= 19
s2 = s2 + i2 ^ 2
i2 = i2 + 2
Wend
fun4 = s1 - s2
End Function
Ответ: 295,4
8) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=1-2^3+3^3-...-20^3.
Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Решение:
Public Function fun4()
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
s1 = 0
i1 = 1
While i1 <= 19
s1 = s1 + i1 ^ 3
i1 = i1 + 2
Wend
s2 = 0
i2 = 2
While i2 <= 20
s2 = s2 + i2 ^ 3
i2 = i2 + 2
Wend
fun4 = s1 - s2
End Function
Ответ: -6020
9) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=2^2-3^2+4^2-...+30^2.
Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Решение:
Public Function fun4()
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
s1 = 0
i1 = 2
While i1 <= 30
s1 = s1 + i1 ^ 2
i1 = i1 + 2
Wend
s2 = 0
i2 = 3
While i2 <= 29
s2 = s2 + i2 ^ 2
i2 = i2 + 2
Wend
fun4 = s1 - s2
End Function
Ответ: 652,4
10) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=1+2^2+3^2-...+25^2.
Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Решение:
Public Function fun4()
Dim s As Double, i As Integer
s = 0
i = 1
While i <= 25
s = s + i ^ 2
i = i + 2
Wend
fun4 = s
End Function
Ответ: 7735
11) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun5, которая вычисляет сумму S=1-2^3+3^3-...-n^3.
Заголовок функции, который должен иметь вид: Function fun5(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B8 значение введите в ответ теста.
Решение:
Public Function fun5(n As Integer) As Integer
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
s1 = 0
i1 = 1
While i1 <= n
s1 = s1 + i1 ^ 3
i1 = i1 + 2
Wend
s2 = 0
i2 = 2
While i2 <= n
s2 = s2 + i2 ^ 3
i2 = i2 + 2
Wend
fun5 = s1 - s2
End Function
Ответ: -23
12) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun5, которая вычисляет сумму S=1-2^2+3^2-...-n^2.
Заголовок функции, который должен иметь вид: Function fun5(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B8 значение введите в ответ теста.
Решение:
Public Function fun5(n As Integer) As Integer
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
s1 = 0
i1 = 1
While i1 <= n
s1 = s1 + i1 ^ 2
i1 = i1 + 2
Wend
s2 = 0
i2 = 2
While i2 <= n
s2 = s2 + i2 ^ 2
i2 = i2 + 2
Wend
fun5 = s1 - s2
End Function
Ответ: -8
13) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun6, которая вычисляет сумму n первых натуральных чисел Фибоначчи.
Заголовок функции, который должен иметь вид: Function fun6(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B9 значение введите в ответ теста.
Решение:
Public Function fun6(n As Double) As Double
Dim s As Double, p As Integer, i As Integer, k As Integer
s = 0
p = 1
i = 1
For k = 1 To n
s = p + i
p = i
i = s
Next k
fun6 = s - 1
End Function
Ответ:381
14) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun7, которая вычисляет сумму квадратов цифр заданного числа n.
Заголовок функции, который должен иметь вид: Function fun7(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B10 значение введите в ответ теста.
Решение:
Public Function fun7(ByVal n As Long) As Double
n = Abs(n)
Dim p
p = 0
While n <> 0
p = p + (n Mod 10) ^ 2
n = n \ 10
Wend
fun7 = p
End Function
Ответ: 4
15) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun7, которая вычисляет произведение цифр заданного числа n.
Заголовок функции, который должен иметь вид: Function fun7(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B10 значение введите в ответ теста.
Решение:
Public Function fun7(ByVal n As Long) As Double
n = Abs(n)
Dim p
p = 0
While n <> 0
p = p *n Mod 10
n = n \ 10
Wend
fun7 = p
End Function
Ответ: 2
Задание 1
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте функцию VBA с именем Fun9, которая в заданном диапазоне Листа Excel вычисляет количество четных чисел диапазона.
Заголовок функции, который должен иметь вид: Function fun9(A As Variant), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B12 значение введите в ответ теста.
Решение:
Public Function fun9(a As Variant) As Double
Dim s As Double, i As Variant
s = 0
For Each i In a
If i Mod 2 = 0 Then s = s + 1
Next i
fun9 = s
End Function
Ответ: 7
Задание 2
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc1, которая в диапазоне K1:L4 активного Листа Excel находит наименьшее число. Результат процедура должна вернуть в ячейку B14.
Заголовок процедуры, который должен иметь вид: Procedure Proc1(), уже создан в модуле 2, необходимо только записать тело процедуры.
На листе 1 книги выполните подрограмму и полученное в ячейке B14 значение введите в ответ теста.
Решение:
Public Sub Proc1()
Dim a As Range, i As Variant, s As Double
Set a = Range("K1:L4")
Min = a(1, 1)
For Each i In a
If i < Min Then Min = i
Next i
Cells(14, 2).Value = Min
End Sub
Ответ: -2
Задание 3
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc2, которая в выделенном диапазоне активного Листа Excel вычисляет количество четных положительных чисел. Результат процедура должна вернуть в ячейку B15.
Заголовок процедуры, который должен иметь вид: Procedure Proc2(), уже создан в модуле 2, необходимо только записать тело процедуры.
На листе 1 книги выполните подрограмму и полученное в ячейке B15 значение введите в ответ теста.
Решение:
Public Sub Proc2()
Dim a As Range, i As Variant, s As Double
Set a = Selection
s = 0
For Each i In a
If i Mod 2 = 0 And i > 0 Then s = s + 1
Next i
Cells(15, 2).Value = s
End Sub
Ответ: 7
Задание 4
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте функцию VBA с именем Fun10, которая в заданном диапазоне активного Листа Excel вычисляет сумму чисел, кратных заданному числу К.
Заголовок функции, который должен иметь вид: Function fun10(A As Variant, K), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B13 значение введите в ответ теста.
Решение:
Public Function fun10(a As Variant, k As Double)
Dim s As Double, i As Variant
c = 0
For Each i In a
If i Mod k = 0 Then s = s + i
Next i
fun10 = s
End Function
Ответ: 5
Задание 5
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте функцию VBA с именем Fun9, которая в заданном диапазоне Листа Excel вычисляет сумму положительных чисел диапазона.
Заголовок функции, который должен иметь вид: Function fun9(A As Variant), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B12 значение введите в ответ теста.
Решение:
Public Function fun9(a As Variant) As Double
Dim s As Double, i As Variant
s = 0
For Each i In a
If i > 0 Then s = s + i
Next i
fun9 = s
End Function
Ответ:25
Задание 7
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc2, которая в выделенном диапазоне активного Листа Excel вычисляет сумму четных отрицательных чисел. Результат процедура должна вернуть в ячейку B15.
Заголовок процедуры, который должен иметь вид: Procedure Proc2(), уже создан в модуле 2, необходимо только записать тело процедуры.
На листе 1 книги выполните подрограмму и полученное в ячейке B15 значение введите в ответ теста.
Решение:
Public Sub Proc2()
Dim a As Range, i As Variant, s As Double
Set a = Selection
s = 0
For Each i In a
If i Mod 2 = 0 And i < 0 Then s = s + i
Next i
Cells(15, 2).Value = s
End Sub
Ответ: -6
Задание 8:
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте функцию VBA с именем Fun9, которая в заданном диапазоне Листа Excel вычисляет количество положительных чисел диапазона.
Заголовок функции, который должен иметь вид: Function fun9(A As Variant), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B12 значение введите в ответ теста.
Решение:
Public Function fun9(a As Variant) As Double
Dim s As Double, i As Variant
s = 0
For Each i In a
If i > 0 Then s = s + 1
Next i
fun9 = s
End Function
Ответ: 8
Задание 9:
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc1, которая в диапазоне K1:N4 активного Листа Excel вычисляет сумму отрицательных чисел. Результат процедура должна вернуть в ячейку B14.
Заголовок процедуры, который должен иметь вид: Procedure Proc1(), уже создан в модуле 2, необходимо только записать тело процедуры.
На листе 1 книги выполните подрограмму и полученное в ячейке B14 значение введите в ответ теста.
Решение:
Public Sub Proc1()
Dim a As Range, i As Variant, s As Double
Set a = Range("K1:N4")
s = 0
For Each i In a
If i < 0 Then s = s + i
Next i
Cells(14, 2).Value = s
End Sub
Ответ: -6
Задание 10:
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc2, которая в выделенном диапазоне активного Листа Excel находит наибольшее число. Результат процедура должна вернуть в ячейку B15.
Заголовок процедуры, который должен иметь вид: Procedure Proc2(), уже создан в модуле 2, необходимо только записать тело процедуры.
На листе 1 книги выполните подрограмму и полученное в ячейке B15 значение введите в ответ теста.
Решение:
Public Sub Proc2()
Dim a As Range, i As Variant, s As Double
Set a = Selection
Max = a(1, 1)
For Each i In a
If i > Max Then Max = i
Next i
Cells(15, 2).Value = Max
End Sub
Ответ: 140
Задание 1,2
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, доработайте пользовательскую форму VBA с именем UserForm2 (уже создана), которая на интервале от M до N находит сумму простых чисел. Результат должен быть получен в текстовом поле TextBox3 (Результат).
Имена полей, форм и кнопок изменять не надо. Требуется только написать операторы в тело процедуры кнопки Выполнить, уже созданой в форме UserForm2.
На листе 1 книги выполните форму UserForm2 и полученное в ячейке B19 значение введите в ответ теста.
Решение:
Открываем Userform2, 2 раза щёлкаем по кнопке Выполнить
Сначала пишем прогу для простых чисел
Public Function prostoe(ByVal n As Long) As Boolean
Dim i As Long
prostoe = True
If n > 1 Then
For i = 2 To Sqr(n)
If n Mod i = 0 Then
prostoe = False
Exit For
End If
Next i
Else
prostoe = False
End If
End Function
Потом пишем форму
Private Sub CommandButton1_Click()
m = Val(TextBox1.Text)
n = Val(TextBox2.Text)
Dim i As Long, s As Double
s = 0
For i = m To n
If prostoe(i) = True Then s = s + i
Next i
TextBox3.Text = Format(s)
End Sub
Нажимаем выполнить UserForm2 и, в появившемся окне, нажимаем на выполнить
Ответ: Сумма простых : 72
Если нужно найти количество , то вместо этого If prostoe(i) = True Then s = s + i, пишем If prostoe(i) = True Then s = s + 1
Ответ: Количество : 6
Задание 3,4.
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, доработайте пользовательскую форму VBA с именем UserForm1 (уже создана), которая среди трех заданых в форме чисел A, B, C , задающих коэффициенты квадратного уравнения, находит сумму корней уравнения. Если корней не существует, возвращает сово "нет". Результат должен быть получен в текстовом поле TextBox4 (Результат).
Имена полей, форм и кнопок изменять не надо. Требуется только написать операторы в тело процедуры кнопки Выполнить, уже созданой в форме UserForm1.
На листе 1 книги выполните форму UserForm1 и полученное в ячейке B18 значение введите в ответ теста.
Решение:
Private Sub CommandButton1_Click()
a = Val(TextBox1.Text)
b = Val(TextBox2.Text)
c = Val(TextBox3.Text)
Dim d As Double, x1 As Double, x2 As Double, s As Double
d = b ^ 2 - 4 * a * c
If d >= 0 Then
x1 = (-b + Sqr(d)) / (2 * a)
x2 = (-b - Sqr(d)) / (2 * a)
s = x1 + x2
TextBox4.Text = Format(s)
Else
TextBox4.Text = "Нет"
End If
End Sub
Ответ: 8
Если произведение корней, то вместо этого s = x1 + x2, пишем s = x1 * x2
Ответ: 15
Задание 1
В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun1_1 (вставьте нужные операторы в загововки уже созданной функции), которая вычисляет выражение по формуле:
1-x^2
fun1_1 = ----------
2 - 3x
На листе 1 книги выполните функцию и полученное в ячейке B4 значение введите в ответ теста. Дробная часть числа от целой отделяется запятой. Правильно 1 / 1
Решение:
Public Function fun1_1(x)
fun1_1 = (1 - x ^ 2) / (2 - 3 * x)
End Function
Задание 2
В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun5_1, которая вычисляет сумму S=1-2^3+3^3-...-n^3.
Заголовок функции, который должен иметь вид: Function fun5_1(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B8 значение введите в ответ теста.
Правильно 1 / 1
Решение:
Public Function fun5_1(N As Integer)
Dim s As Double
Dim i As Integer
Dim z As Integer
s = 0
z = 1
For i = 1 To N
s = s + z * (i ^ 3)
z = -z
Next i
fun5_1 = s
End Function
Задание:
В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun8_1, которая подсчитывает количество русских букв "а" и "е" в заданом тексте S.
Заголовок функции, который должен иметь вид: Function fun8_1(S As String), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B11 значение введите в ответ теста. Правильно 1 / 1
Решение:
Public Function fun8_1(s As String)
Dim i As Integer
Dim p As Integer
p = 0
For i = 1 To Len(s)
If Mid(s, i, 1) = "a" Then
p = p + 1
ElseIf Mid(s, i, 1) = "e" Then
p = p + 1
End If
Next i
fun8_1 = p
End Function
Задание:
В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA с именем fun3_1 для нахождения из трех произвольных чисел A, B, C суммы двух найбольших чисел.
Заголовок функции, который должен иметь вид: Function fun3_1(a,b,c), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B6 значение введите в ответ теста.
Решение:
Public Function fun3_1(a, b, c)
If a < b Then
fun3_1 = c + b
Else
If b < c Then
fun3_1 = c + a
Else
fun3_1 = b + a
End If
End If
End Function
Задание:
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc1, которая в диапазоне L1:R4 активного Листа Excel находит наибольшее число. Результат процедура должна вернуть в ячейку B14.
Заголовок процедуры, который должен иметь вид: Procedure Proc1(), уже создан в модуле 2, необходимо только записать тело процедуры.
На листе 1 книги выполните подрограмму и полученное в ячейке B14 значение введите в ответ теста.
Решение:
Public Sub Proc1()
Dim a As Range, i As Variant, s As Double
Set a = Range("L1:R4")
Max = a(1, 1)
For Each i In a
If i > Max Then Max = i
Next i
Cells(14, 2).Value = Max
End Sub
Задание:
В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, доработайте пользовательскую форму VBA с именем UserForm2 (уже создана), которая на отрезке [m+20;n] находит сумму простых чисел. Результат должен быть получен в текстовом поле TextBox3 (Результат).
Имена полей, форм и кнопок изменять не надо. Требуется только написать операторы в тело процедуры кнопки Выполнить, уже созданой в форме UserForm2.
На листе 1 книги выполните форму UserForm2 и полученное в ячейке B19 значение введите в ответ теста.
Решение:
Private Sub CommandButton1_Click()
M = Val(TextBox1.Text) + 20
N = Val(TextBox2.Text)
Dim i As Long, s As Double
s = 0
For i = M To N
If prostoe(i) = True Then s = s + i
Next i
TextBox3.Text = Format(s)
End Sub
Private Sub CommandButton2_Click()
UserForm2.Hide
End Sub
Public Function prostoe(ByVal N As Long) As Boolean
Dim i As Long
prostoe = True
If N > 1 Then
For i = 2 To Sqr(N)
If N Mod i = 0 Then
prostoe = False
Exit For
End If
Next i
Else
prostoe = False
End If
End Function
Задание:
В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun7_1, которая вычисляет количество простых чисел на отрезке [10..N].
Заголовок функции, который должен иметь вид: Function fun7_1(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B10 значение введите в ответ теста.
Решение:
Public Function fun7_1(n As Long)
Dim s As Long
Dim i As Long
Dim str As String
s = 0
str = 0
For i = 10 To n
For j = 1 To i
If i Mod j = 0 Then
s = s + 1
End If
Next j
If s = 2 Then str = str + 1
s = 0
Next i
fun7_1 = str
End Function
Задание:
В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию в модуле 1 с именем fun1_1 на VBA (вставьте нужные операторы в загововки уже созданной функции), которая вычисляет выражение по формуле:
(2x+1)^2
fun1_1 = ------------ - (x+2)^3
x+1
На листе 1 книги выполните функцию и полученное в ячейке B4 значение введите в ответ теста.
Решение:
Public Function fun1_1(x As Double) As Double
fun1_1 = (((2 * x + 1) ^ 2) / (x + 1)) - ((x + 2) ^ 3)
End Function