Дело в общем вот в чем, девушка, которая мне очень нравиться, учится в университете на гуманитарной специальности (заочное отделение) и у них на информатике решили, что они освоят работу с VBA в Excel 2003. Я сказал что возмусь помочь, но как оказалось не один из моих знакомых не взялся решить задачи, сам по специальности я историк. Я далеко не ламер в компьютерах, но самостоятельно понять многие моменты я не в могу. Прошу!!! Помгите пожалуйста с решением задач по VBA. Очень хочу выглядеть в хорошем свете, перед любимой.
Задание №1
a) В VBA создать пользовательскую функцию.
b) Произвести несколько расчетов функции при различных значениях аргумента.
c) На Листе1 оформить таблицу с исходными данными и результатами расчета.
Y=(1+X)/(1+корень квадратный из (2+X+X в квадрате)).
Задание №2
a) В VBA создать пользовательскую функцию y = f(a, b).
b) Вычисление y производить с использованием нескольких операторов и получением промежуточных значений (функцию разбить на логически самостоятельные части).
c) Значения а и b для тестирования подбирать таким образом, чтобы значение y легко проверялось.
d) Произвести несколько расчетов функции y: для значений а и b с легкой проверкой результата и варианта, приведенного в таблице.
e) На Листе1 оформить таблицу с исходными данными и результатами расчета.
Y= f(a,b) (0,75*e в степени (1-b) + 0,31*e в степени (1-a))/(0,731+sin в квадрате (b/a пи)) Где значение а=4 b = 3,141
Задание №3
a) В VBA создать пользовательскую функцию.
b) Произвести несколько расчетов функции при различных значениях аргумента.
c) На Листе1 оформить таблицу с исходными данными и результатами расчета.
F(t) = фигурная скобка (сверху (t-1) в степени 3/2 после нее a <, либо равно t > либо равно 10). (Снизу (t+1) в степени 3/2 после нее 10 пи t < либо равно b) где a=5 b=15.
Задание №4
В VBA создать макрос, выполняющий следующие операции:
Преобразовать одномерный числовой массив: от каждого элемента отнять среднее арифметическое всех элементов.
Задание №5
В VBA создать макрос, выполняющий следующие операции:
Во введенном тексте подсчитать количество буквенных символов и количество разделителей (. , ; : ").
Заранее огромнейшее спасибо, не дайте погибнуть.
Задания все есть в электронном виде, просто все формулы в картинках.
''(задание №4)
Public Function ChangeArray(source As Variant) As Variant
Dim count As Integer
count = UBound(source) + 1
Dim aver As Double
aver = Summing(source) / count
Dim i As Integer
For i = LBound(source) To UBound(source)
source(i) = source(i) - aver
Next
ChangeArray = source
End Function
Public Function Summing(source As Variant) As Double
Summing = 0#
Dim i As Integer
For i = LBound(source) To UBound(source)
Summing = Summing + CDbl(source(i))
Next
End Function
''(Задание №5)
Public Function CountChars(s As String) As Variant
Dim letters As Integer
Dim dots As Integer
Dim commas As Integer
Dim colons As Integer
Dim semicolons As Integer
Dim subs As String
Dim i As Integer
For i = 1 To Len(s)
subs = Mid(s, i, 1)
Select Case subs
Case Is = "."
dots = dots + 1
Case Is = ","
commas = commas + 1
Case Is = ":"
colons = colons + 1
Case Is = ";"
semicolons = semicolons + 1
Case Else
letters = letters + 1
End Select
Next
Dim result(0 To 5) As Integer
result(0) = letters
result(1) = dots
result(2) = commas
result(3) = colons
result(4) = semicolons
CountChars = result
End Function
''(Тест)
Public Sub test()
Dim arr As Variant
Dim i As Integer
''(Тест задания №4)
arr = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Dim res As Variant
res = ChangeArray(arr)
For i = LBound(res) To UBound(res)
Debug.Print (res(i))
Next
''(Тест задания №5)
Dim s As String
Dim a As Double
Dim b As Double
Dim y As Double
Dim i As Integer
a = 4
b = 3.141
y = UserFunction(a, b)
MsgBox Round(y, 12)
Dim rng As Range
Set rng = Sheets(1).Cells(1, 1)
rng.Cells(1, 1) = "a"
rng.Cells(1, 2) = "b"
rng.Cells(1, 3) = "Y"
For i = 2 To 10
rng.Cells(i, 1) = a
rng.Cells(i, 2) = b
rng.Cells(i, 3) = UserFunction(a, b)
a = a + 1
b = b + 0.1
Next
End Sub
Public Function Pow(num As Double, expt As Double) As Double
Pow = num ^ expt
End Function
Public Function UserFunction(a As Double, b As Double)
Dim e As Double
e = 2.718282
UserFunction = 0.75 * Pow(e, 1 - b) + (0.31 * Pow(e, 1 - a)) / (0.731 + Pow(Sin(b / (a * Math.Atn(1#))), 2))
End Function
1.Даны три числа A,B,C. Вывести на эран среднее арифметическое для чётных чисел. Если чётных чисел нет, то вывести на экран сообщение (Нет чётных чисел).
2.Даны натуральные числа х и N(x>N).Если х равно одному из чисел N!/1, N!/2, N!/3,.....N!/N, то вывести на экран сообщение (Да), иначе - сообщение (Нет)
3.Вывести на экран все натуральные числа A,B,C, удовлетворяющее уравнению A^2+B^2=C^2, условию А<B и меньше 20.
4.Рассмотрим область |х|+|у|<1 и прямую Ax+By=1. Даны числа A и B.Если область и прямаюя имеют общую точку, то вывести на экран сообщение (Да),иначе - сообщение (Нет).
5. Даны шесть действительных чисел a,b,c,d,e,f, которые являются координатами R(a,b),S(c,d),T(e,f)трёх точек R,S и T на плоскости.Если точка T лежит выше прямой, проходящей через две другие точки, то вывести на экран сообщение (Да), иначе - сообщение (Нет)
Вот такие задачи нужна помощь, надо в VBa написать а у меня не получается. Кто может помочь написать код и объяснить
Nace,
1. Создавайте собственную тему для своих вопросов, так как по отношению к авторам других тем так поступать неправильно.
2. Неясно, о каком VB идет речь: VB6, VBA, VBScript, VB.NET (какой версии).
3. Непонятен Ваш уровень, так как вы не показали, что можете и что именно у вас не получается.
4. Хотите ускорить - дайте какую-то мотивацию ребятам. Лично я предпочитаю материальную ))