Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 04.12.2018
Сообщений: 94
Excel

Задача на одномерный массив в VBA Exel

23.02.2019, 16:09. Показов 2575. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с задачей, первая часть вроде понятна, а вот со второй проблемка!
В одномерный массив A размерности N при помощи датчика случайных чисел вводятся действительные числа в диапазоне от -200 до 200 (N вводится с клавиатуры). Вывести их в строку рабочего листа. Все ячейки рабочего листа, в которых записаны числа превышающие полусумму максимального и минимального значений всех элементов массива с дробной частью, имеющую вторую цифру 5, выделить цветом.
Visual Basic
1
2
3
4
5
6
7
8
9
Sub LB5()
Dim n As Double, a As Double
n = InputBox("Ââåäèòå çíà÷åíèå N: ")
For i = 1 To n
Randomize Timer
  Cells(1, i) = Rnd * 12200 - 200
  Cells(1, i).Value = Cells(1, i)
Next i
End Sub
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.02.2019, 16:09
Ответы с готовыми решениями:

VBA одномерный массив
вот запутался Дан целочисленный вектор A(n). Найти минимальное значение среди элементов, меньших заданного числа b, и расположенных до...

Одномерный массив в VBA
Помогите, пожалуйста, решить задачу. Дан одномерный массив (1 до 75). Подсчитать количество положительных и количество отрицательных...

Vba одномерный массив
найти максимальный элемент среди отрицательных элементов одномерного массива размерность массива задается пользователем

10
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
23.02.2019, 17:32
Олег_313, поправлю пока то, что вы написали. Строку 5 можно поменять местами с 4
Cells(1, i) = Int(401 * Rnd -200) а строка 7 вообще не понять что, смело уберите. А что такое 12200?
1
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
23.02.2019, 18:34
Цитата Сообщение от Олег_313 Посмотреть сообщение
В одномерный массив A размерности N
В коде массива невидно!
0
1 / 1 / 0
Регистрация: 04.12.2018
Сообщений: 94
24.02.2019, 06:46  [ТС]
Visual Basic
1
2
3
4
5
6
7
8
Sub LB5()
Dim n As Double, a As Double
n = InputBox("Введите значение N: ")
Randomize Timer
  For i = 1 To n
  Cells(1, i) = Int(401 * Rnd - 200)
Next i
End Sub
Спасибо за поправки!
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
24.02.2019, 09:36
Лучший ответ Сообщение было отмечено Олег_313 как решение

Решение

Олег_313, не посмотрел, что ищется пятерка в дробной части, тогда Int не нужно. Вот макрос, проверьте
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub LB5()
Dim n As Double, Ma As Double, Mi As Double, A As Double, S As String
Dim J As Integer, I As Integer
n = InputBox("Введите значение N: ")
'n = 10
Ma = -300#: Mi = 300#
Randomize Timer
For I = 1 To n
  A = Cells(1, I) '400 * Rnd - 200: Cells(1, I) = A
  Rows(1).Interior.Pattern = xlNone
  If A > Ma Then Ma = A: If A < Mi Then Mi = A
Next I
A = (Mi + Ma) / 2 'а может полусумму надо считать по абсолютным значениям?
'MsgBox Mi & "  " & Ma & "  " & A
For I = 1 To n
  If Cells(1, I) > A Then 'больше полусуммы
    S = CStr(Cells(1, I))
    J = InStr(S, "."): If J = 0 Then J = InStr(S, ",")
    If J > 0 And Mid(S, J + 2, 1) = "5" Then Cells(1, I).Interior.Color = 5287936
  End If
Next I
End Sub
Добавлено через 8 минут
Олег_313, строку 10 поставьте после строки 7, хотя и так будет работать, только это малость не по-программистски
1
1 / 1 / 0
Регистрация: 04.12.2018
Сообщений: 94
24.02.2019, 10:53  [ТС]
Спасибо большое, буду разбираться!
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
24.02.2019, 15:14
Олег_313, накладочка получилась. При отладке малость переделывал, а назад не вернул. Строка 9 должна выглядеть так
Visual Basic
1
A =400 * Rnd - 200: Cells(1, I) = A
Добавлено через 55 минут
Олег_313, и ещё - хотел сэкономить строчку, а в условном операторе этого делать нельзя. Строку 11 надо разбить на две
Visual Basic
1
2
If A > Ma Then Ma = A
If A < Mi Then Mi = A
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
24.02.2019, 21:33
Цитата Сообщение от Олег_313 Посмотреть сообщение
Все ячейки рабочего листа, в которых записаны числа превышающие полусумму максимального и минимального значений всех элементов массива с дробной частью, имеющую вторую цифру 5, выделить цветом.
Вариант с формулами и условным форматированием
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub Ol()
Dim n&
  Cells.Clear
  n = InputBox("Введите значение N: ", , 10)
  With Range("A1").Resize(, n)
    .Cells(1).FormulaR1C1 = "=IF(RC>(MIN(R1C1:R1C" & n & ")+MAX(R1C1:R1C" & n & "))/2,MOD(TRUNC(ABS(RC*100)),10)=5)"
    .FormatConditions.Add(Type:=xlExpression, Formula1:=.Cells(1).FormulaR1C1Local).Interior.Color = 65535
    .Formula = "=RAND()*400-200"
  End With
  MsgBox "F9 - обновить", vbInformation
End Sub
0
1 / 1 / 0
Регистрация: 04.12.2018
Сообщений: 94
25.02.2019, 00:14  [ТС]
Спасибо)
0
1 / 1 / 0
Регистрация: 04.12.2018
Сообщений: 94
02.03.2019, 14:02  [ТС]
А как сделать, чтобы "5" искал не в дробной части, а во всем числе, на второй позиции?
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
02.03.2019, 14:58
Олег_313, если в моём макросе, то вместо строк 17 и 18 поставить такую
Visual Basic
1
  If Mid(S,  2, 1) = "5" Then Cells(1, I).Interior.Color = 5287936
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.03.2019, 14:58
Помогаю со студенческими работами здесь

одномерный массив в VBA
Дана последовательность чисел, среди которых имеется два нуля. Вывести на печать все числа, находящиеся между этими нулями. есть начало...

Организовать одномерный и двумерный массив в VBA
1. Одномерный массив из случайных значений. Замените первое нечётное число на 1, второе - на 3, третье - на 5 и т.д. 2. Двумерный массив...

Импорт из Exel через VBA. Импорт запроса в Exel
Привтсвую форумчане. Такая проблемма. Есть определенный набор готовых спецификаций для импорта экспорта данных. Из файла эксель...

Задача на двумерный массив: построить одномерный массив по правилу
Вообщем есть кусок задачи, который не могу решить. .... построить одномерный массив В, по правилу: если a&lt;0, то в качестве b...

Программа на VBA, которая сжимает одномерный массив путем удаления элементов
Программа, которая сжимает одномерный массив A длинной n элементов путем удаления элементов, совпадающих с числом L, и указывает...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru