Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 7
1

Найти макс число выделенного диапазона рабочей таблицы

10.03.2011, 18:40. Показов 3175. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пожалуйста помогите. Необходимо разработать подпрограмму для нахождения максимального по модулю числа выделенного диапазона рабочей таблицы и замены им нулевых элементов в выделенном диапазоне. Элементы массива необходимо ввести вручную через функцию INputbox. Заранее спасибо!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2011, 18:40
Ответы с готовыми решениями:

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

Нахождение максимального значения среди отрицательных элементов выделенного диапазона рабочей таблицы
Разработать подпрограмму нахождения максимального значения сре ди отрицательных элементов...

Excel: создать новый массив по возрастанию элементов выделенного диапазона рабочей таблицы
Разработать подпрограмму создания нового массива по возрастанию элементов выделенного диапазона...

Нахождение максимального и минимального значений выделенного диапазона рабочей таблицы и замена их нулевыми значениями
Разработайте подпрограмму или пользовательскую форму для нахождения максимального и минимального...

4
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
10.03.2011, 21:10 2
Для выделенного диапазона будет так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Test()
    Dim c As Range, dMax As Double
    
    dMax = ActiveCell.Value
    For Each c In Selection.Cells
        If Abs(dMax) < Abs(c.Value) Then dMax = c.Value
    Next
    
    For Each c In Selection.Cells
        If c.Value = 0 Then c.Value = dMax
    Next
    
    MsgBox dMax
End Sub
Элементы массива необходимо ввести вручную через функцию INputbox
А вот эта фраза как бы ни при чем. Вы уж определитесь сначала.
0
127 / 95 / 74
Регистрация: 18.01.2011
Сообщений: 227
10.03.2011, 22:05 3
Цитата Сообщение от mc-black Посмотреть сообщение
А вот эта фраза как бы ни при чем. Вы уж определитесь сначала.
Задача записана правильно. Тут необходимо решать в две процедуры. В первой задается размерность массива и через InputBox вводятся сами элементы иодновременно заполняются ячейки. Далее производится выделение диапазона и тогда запускается вторая процедура, которая производит вычисления.

Добавлено через 18 минут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Public Sub ввод_массива()
Dim stl As Double
Dim str As Double
Dim i As Integer
Dim j As Integer
met1:
Cells.Clear
On Error GoTo m:
str = InputBox("Введите количество строк", "Ввод")
stl = InputBox("Введите количество столбцов", "Ввод")
Dim l As Integer
If CInt(str) <> CDbl(str) Or Int(stl) <> CDbl(stl) Or str <= 0 Or stl <= 0 Then str = 1 / 0
str = CInt(str)
stl = CInt(stl)
For i = 1 To stl
For j = 1 To str
  ReDim mas(i, j) As Double
  mas(i, j) = InputBox("Введите элемент [" & i & ";" & j & "]", "Ввод массива")
  Sheets("Лист1").Cells(i, j) = mas(i, j)
Next j
Next i
Exit Sub
m:
If Err = 11 Then
  o = MsgBox("Неверно задана размерность массива", 5 + 16, "Ошибка")
    If o = 4 Then
       Resume met1
       Else
       Exit Sub
    End If
End If
If Err = 13 Then
   o = MsgBox("Некоректный ввод данных", 5 + 16, "Ошибка")
    If o = 4 Then
       Resume met1
       Else
       Exit Sub
    End If
End If
End Sub
Public Sub Запуск()
Dim a1 As Range
Dim а2 As Double
Dim Pr As Double
Dim n As Integer, x As Integer, y As Integer
On Error GoTo m
    If Application.CountA(Selection) < Selection.Cells.Count Then
    n = 1 / 0
    Else
    GoTo met
    End If
met:
With ActiveSheet
     Set a1 = Selection
     a1.Activate
             'a2 = Application.Average(a1)
             a2 = Application.Max(a1)
             MsgBox a2
             a1 = 0
      End With
     
Exit Sub
m:
If Err = 13 Or Err = 11 Then
   o = MsgBox("Неправильно выполнено выделение ячеек", 16, "Ошибка")
     If o = 5 Then
       Resume
     End If
End If
End Sub
1
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 7
10.03.2011, 22:18  [ТС] 4
romcka-x
Спасибо...Но можно было бы и без обработки ошибок.Обработку сделала бы сама
0
127 / 95 / 74
Регистрация: 18.01.2011
Сообщений: 227
10.03.2011, 22:21 5
Я только по модулю не сделал.

Обработка осталась еще с моей программы.
0
10.03.2011, 22:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2011, 22:21
Помогаю со студенческими работами здесь

Разработать подпрограмму создания нового массива по убыванию элементов выделенного диапазона рабочей таблицы
Разработать подпрограмму создания нового массива по убыванию элементов выделенного диапазона...

Подпрограмма для нахождения максимального и минимального выделенного диапазона рабочей таблицы
Разработайте подпрограмму или пользовательскую форму для нахождения максимального и минимального...

Найти число из диапазона вне таблицы
Здравствуйте! Помогите, пожалуйста решить: Элементы таблицы A являются целыми числами от 0 до...

Все значения выделенного диапазона листа Excel умножить на заданное число
Разработайте форму с одним полем и одной кнопкой. В поле вводится число, а при нажатии на кнопку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru