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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2012, 01:42   #1
Sir.Jucce
 
Регистрация: 12.12.2012
Сообщений: 6
Восклицание как найти среднее значение к программе в ВБА ЭКСЭЛЬ

есть код программы, не знаю как написать программу к этим заданиям:
Код:
1.Напишите программу, которая для чисел, находит среднее значение, записывает его на Лист Excel и выделяет цветом числа, большие вычисленного среднего значения на 5%.
2.Среди значений Z из диапазона найти первое, которое окажется больше соответствующего ему значения Y.
Код:
Sub ЛР6_1()
Range("A1").Value = "X"
Range("B1").Value = "Y"
Range("C1").Value = "Z"
Dim x As Single, y As Single, z As Single
Dim a As Single, b As Single, h As Single
i = 2
For x = -1 To 1 Step 0.1
If x <= 0.5 And x > 0.5 Then
y = Sqr(1 + Abs(x))
Else
y = (1 + 3 * x) / (2 + (1 + x) ^ 1 / 3)
End If
z = 3 * Cos(2 * y)
Cells(i, 1).Value = x
Cells(i, 2).Value = y
Cells(i, 3).Value = z
i = i + 1
Next x
End Sub
За ранее спасибо!
Sir.Jucce вне форума Ответить с цитированием
Старый 12.12.2012, 02:31   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
Sub ЛР6_1()
    Range("A1").Value = "X"
    Range("B1").Value = "Y"
    Range("C1").Value = "Z"
    Range("D1").Value = "AVG="

    Dim x As Single, y As Single, z As Single
    Dim a As Single, b As Single, h As Single
    Dim M_Stop As Boolean
    i = 2
    For x = -1 To 1 Step 0.1
        If x <= 0.5 And x > 0.5 Then
            y = Sqr(1 + Abs(x))
        Else
            y = (1 + 3 * x) / (2 + (1 + x) ^ 1 / 3)
        End If
        z = 3 * Cos(2 * y)
        h = h + z
        Cells(i, 1).Value = x
        Cells(i, 2).Value = y
        Cells(i, 3).Value = z

        If M_Stop = False And z > x Then
            M_Stop = True
            Cells(i, 4).Value = "первое" & z
        End If


        i = i + 1
    Next x
    h = h / (i - 2)
    Range("E1").Value = h

    For x = 2 To 21

        If Cells(x, 3).Value > h * 1.05 Then
            Cells(x, 3).Interior.ColorIndex = 6
            Cells(x, 3).Font.ColorIndex = 3
        End If

    Next
    
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 12.12.2012, 09:14   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Вообще-то задача 1 решается ещё проще:
Код:
Sub ff()
  Set R = [A1:A10]
  S = "Average(" & R.Address & ")"
  [B1] = Evaluate(S)
  Set FC = R.FormatConditions.Add(Type:=xlCellValue, Operator:=xlGreater, Formula1:="=$B$1*1,05")
  FC.Interior.ColorIndex = 6
  FC.Font.ColorIndex = 3
End Sub
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 12.12.2012, 12:04   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Преподаватели мыслят совсем по другому.Им надо так.как в методичке описано,опыт в этом вопросе есть.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 12.12.2012, 17:57   #5
Sir.Jucce
 
Регистрация: 12.12.2012
Сообщений: 6
По умолчанию

большое спасибо вам за помощь)
Sir.Jucce вне форума Ответить с цитированием
Старый 17.12.2012, 00:40   #6
Sir.Jucce
 
Регистрация: 12.12.2012
Сообщений: 6
Печаль

Цитата:
Сообщение от doober Посмотреть сообщение
Код:
Sub ЛР6_1()
    Range("A1").Value = "X"
    Range("B1").Value = "Y"
    Range("C1").Value = "Z"
    Range("D1").Value = "AVG="

    Dim x As Single, y As Single, z As Single
    Dim a As Single, b As Single, h As Single
    Dim M_Stop As Boolean
    i = 2
    For x = -1 To 1 Step 0.1
        If x <= 0.5 And x > 0.5 Then
            y = Sqr(1 + Abs(x))
        Else
            y = (1 + 3 * x) / (2 + (1 + x) ^ 1 / 3)
        End If
        z = 3 * Cos(2 * y)
        h = h + z
        Cells(i, 1).Value = x
        Cells(i, 2).Value = y
        Cells(i, 3).Value = z

        If M_Stop = False And z > x Then
            M_Stop = True
            Cells(i, 4).Value = "первое" & z
        End If


        i = i + 1
    Next x
    h = h / (i - 2)
    Range("E1").Value = h

    For x = 2 To 21

        If Cells(x, 3).Value > h * 1.05 Then
            Cells(x, 3).Interior.ColorIndex = 6
            Cells(x, 3).Font.ColorIndex = 3
        End If

    Next
    
End Sub
Пожалуйста, объясни что ты написал. никак понять не могу)
Sir.Jucce вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на VBA. Найти среднее значение отрицательных чисел. PeterFox Microsoft Office Excel 7 18.01.2012 16:07
найти среднее арифметическое значение положительных и отрицательных элементов массива A=(a[i][j]), i=1,2,...,n; j=1,2,...,m. Valentina2011 Общие вопросы C/C++ 2 15.12.2011 13:04
найти среднее значение данного массива (Delphi) xakergayday Помощь студентам 3 30.11.2011 13:37
Как найти среднее значение не считая нули. SNV75_13 Microsoft Office Excel 16 24.02.2011 13:37