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

По максимальной цене вывести название детали, у которой эта максимальная стоимость

09.09.2011, 09:03. Показов 2720. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть табличка: в первом столбике записаны названия типов деталей, в другом столбике стоимость. Мне надо написать код, который выбирает максимальную цену и ниже таблицы выводит название детали, у которой эта максимальная стоимость! надеюсь нормально объяснила
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2011, 09:03
Ответы с готовыми решениями:

Найти название товара, который по цене наиболее близкий к средней цене
Задан массив из 2 столбцов Excel "Цены" и "Товары" Нужно найти название одного товара, который по цене наиболее близкий к средней цене. ...

Вывести стоимость указанной массы конфет, при заданной цене за килограмм
Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1.2, 1.4, …, 2 кг конфет.

Вывести номер детали, изготовленной из материала максимальной плотности
Дано целое число N и набор из N пар чисел (m, v) — данные о массе m и объеме v деталей, изготовленных из различных материалов. Вывести...

19
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
09.09.2011, 10:35
Ленуська,
комментарии не все написал, т.к. каждую команду не хочется писать.
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
Sub Процедура1()
Dim Низ As Long
Dim Лист As Excel.Worksheet
Dim Массив() As String
Dim Max As Double
Dim Ячейка As Excel.Range
Dim i As Long
'С листами удобнее работать через переменные
'(удобно обращаться и кода меньше писать).
Set Лист = ActiveWorkbook.ActiveSheet
'Определение последней заполненной ячейки в столбце А
'(чтобы знать, где вставлять максимальные цены).
Низ = Лист.Cells(Лист.Rows.Count, 1).End(xlUp).Row
'Просматриваем ячейки в столбце B до последней
'заполненной и ищем максимальную цену.
'Максимальные значения будем помещать в массив,
'т.к. максимальная цена может быть одинаковой
'у нескольких деталей. За максимальную цену
'возьмём цену в первой ячейке столбца B, где указана цена.
Max = Лист.Cells(2, 2).Value
ReDim Массив(1 To 2, 1 To 1)
Массив(1, 1) = Лист.Cells(2, 1).Text
Массив(2, 1) = Лист.Cells(2, 2).Text
For Each Ячейка In Лист.Range(Лист.Cells(3, 2), Лист.Cells(Низ, 2)).Cells
    If Ячейка.Value > Max Then
        ReDim Массив(1 To 2, 1 To 1)
        Массив(1, 1) = Ячейка.Offset(0, -1).Text
        Массив(2, 1) = Ячейка.Text
    ElseIf Ячейка.Value = Max Then
        ReDim Preserve Массив(1 To 2, 1 To UBound(Массив, 2) + 1)
        Массив(1, UBound(Массив, 2)) = Ячейка.Offset(0, -1).Text
        Массив(2, UBound(Массив, 2)) = Ячейка.Text
    End If
Next Ячейка
'Выводим результат в конце наших данных.
Низ = Низ + 2
For i = 1 To UBound(Массив, 2)
    Лист.Cells(Низ + i, 1).Value = Массив(1, i)
    Лист.Cells(Низ + i, 2).Value = Массив(2, i)
Next i
'Сообщение, что всё готово.
MsgBox "Работа выполнена", vbInformation
End Sub
0
731 / 407 / 95
Регистрация: 19.12.2010
Сообщений: 756
09.09.2011, 10:36
как вариант.
Visual Basic
1
2
3
4
5
6
7
8
Sub n()
 max_st_det = Application.WorksheetFunction.Max([b2:b11])
 Cells(12, 1) = "макс.стоимость=" & max_st_det
 For Each cel In [b2:b11]
   If cel.Value = max_st_det Then nazw = Cells(cel.Row, 1)
 Next cel
 Cells(13, 1) = "название детали=" & nazw
End Sub
1
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 10:42  [ТС]
Cпасибо всем большое! Очень помогли!
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
09.09.2011, 10:48
19vitek,
только так надо:
Visual Basic
1
If cel.Value = max_st_det Then nazw = nazw & "; " & Cells(cel.Row, 1)
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 12:17  [ТС]
For Each cel In - вот это что обозначает (особенно cel)
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
09.09.2011, 12:43
Цитата Сообщение от Ленуська Посмотреть сообщение
For Each cel In - вот это что обозначает (особенно cel)
cel - это переменная, обозначающая ячейку.

For Each ... In ... Next - эта конструкция используется, чтобы просмотреть все элементы. Элементами могут быть книги, листы, ячейки.

В данном случае просматриваются все ячейки в заданном диапазоне [b2:b11]. Т.е. с помощью For Each ... In ... Next анализируется сначала ячейка b2, затем b3 и т.д.
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 12:58  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
cel - это переменная, обозначающая ячейку.
For Each ... In ... Next - эта конструкция используется, чтобы просмотреть все элементы. Элементами могут быть книги, листы, ячейки.
В данном случае просматриваются все ячейки в заданном диапазоне [b2:b11]. Т.е. с помощью For Each ... In ... Next анализируется сначала ячейка b2, затем b3 и т.д
аааыы (( вставила кусок кода в программу, один раз сработало - верно указал деталь,но не указал стоимость. когда поменяля данные, деталь осталась таже
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
09.09.2011, 13:18
Ленуська,
  1. а в каком столбце у вас находятся названия деталей и цены?
  2. на какой строке заканчиваются записи (имеется ввиду детали и цены)?
  3. в какой ячейке должны появится результаты (самая высокая цена и детали, имеющие эту цену)?
0
731 / 407 / 95
Регистрация: 19.12.2010
Сообщений: 756
09.09.2011, 13:21
Прикрепляю файл с работающим макросом.
Вложения
Тип файла: xls Стоимость деталей.xls (32.5 Кб, 53 просмотров)
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 14:02  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
Ленуська,
1. а в каком столбце у вас находятся названия деталей и цены?
2. на какой строке заканчиваются записи (имеется ввиду детали и цены)?
3. в какой ячейке должны появится результаты (самая высокая цена и детали, имеющие эту цену)?
1. в первом столбце детали, в 8 цены (исправила на свои)
2. 37 (я исправила на свои)
3. ячейки тоже поставила свои (40 и 41)
0
731 / 407 / 95
Регистрация: 19.12.2010
Сообщений: 756
09.09.2011, 14:06
прикрепите свой файл. попробуем его настроить под ваши нужды.
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 14:07  [ТС]
Посмотрите пожалуйста,что в коде не так?
Вложения
Тип файла: xls Курсач.xls (68.5 Кб, 15 просмотров)
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 14:08  [ТС]
Цитата Сообщение от 19vitek Посмотреть сообщение
прикрепите свой файл. попробуем его настроить под ваши нужды.
уже прикрепила
0
731 / 407 / 95
Регистрация: 19.12.2010
Сообщений: 756
09.09.2011, 14:24
протестируйте. комментарии есть.
Вложения
Тип файла: xls Копия Курсач.xls (58.5 Кб, 18 просмотров)
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
09.09.2011, 14:24
Удалил сообщение.
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 14:30  [ТС]
Цитата Сообщение от 19vitek Посмотреть сообщение
протестируйте. комментарии есть.
в отдельном макросе работает (я уже так пробовала), а чтобы в один код запихать? никак не получится?
0
731 / 407 / 95
Регистрация: 19.12.2010
Сообщений: 756
09.09.2011, 14:32
оформите мой макрос в виде процедуры и запихивайте в ваш код.
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 15:35  [ТС]
Ураааа, я даже допенькала как процедуру вставлять ) ну прям мегамозгом себя почувствовала ))
СПАСИБО ВСЕЕЕМ БОЛЬШОЕ!!!!!!

Добавлено через 40 минут
Ага, фиг там, рано обрадовалась
Можете еще посмотреть в чем причина: Когда я провожу проверку и на листе Нач_д ставлю везде единицы, то на листе результат в строчке 38 не единички появляются, а остается прежняя сумма
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
09.09.2011, 15:38
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
Sub kr_Click()
'объявляем переменные используемые в программе
Dim i As Long, j As Long 'счетчики циклов
Dim koll(15, 5) As Integer ' количество деталей каждого вида за каждый рабочий день
Dim zar(6) As Double 'заработок за каждый день
Dim koll_n(15) As Integer 'количество деталей каждого вида за истекший период
Dim cena(15) As Double 'стоимость одной изготовленной детали
Dim max_st_det As Double
Dim cel As Excel.Range
Dim nazw As String
 
'считываем начальные данные
Sheets("Нач_д").Activate
'в каждую ячейку массива cena(i) записывается стоимость каждой детали
'для этого используем цикл
For i = 1 To 15
cena(i) = Cells(3 + i, 2)
Next
 
'в каждую ячейку массива koll(i, j) записывается количество
'деталей каждого вида, изготовленных в день
'так как массив двумерный цикл проходит по двум счетчикам
For i = 1 To 15
For j = 1 To 5
koll(i, j) = Cells(3 + i, 2 + j)
         Next j
Next i
 
'на листе "Результат" создаются ячейки с определенными названиями
Sheets("Результат").Cells(1, 1) = "Количество изготовленных деталей"
Sheets("Результат").Cells(2, 1) = "Наименование изделия"
Sheets("Результат").Cells(2, 2) = "Стоимость 1 шт."
Sheets("Результат").Cells(2, 3) = "Изготовлено"
Sheets("Результат").Cells(3, 3) = "1-й день"
Sheets("Результат").Cells(3, 4) = "2-й день"
Sheets("Результат").Cells(3, 5) = "3-й день"
Sheets("Результат").Cells(3, 6) = "4-й день"
Sheets("Результат").Cells(3, 7) = "5-й день"
Sheets("Результат").Cells(3, 8) = "Всего"
Sheets("Результат").Cells(4, 1) = "болт"
Sheets("Результат").Cells(5, 1) = "винт"
Sheets("Результат").Cells(6, 1) = "гайка"
Sheets("Результат").Cells(7, 1) = "шайба"
Sheets("Результат").Cells(8, 1) = "шуруп"
Sheets("Результат").Cells(9, 1) = "гвоздь"
Sheets("Результат").Cells(10, 1) = "скрепка"
Sheets("Результат").Cells(11, 1) = "сверло"
Sheets("Результат").Cells(12, 1) = "шпилька"
Sheets("Результат").Cells(13, 1) = "дюпель"
Sheets("Результат").Cells(14, 1) = "шкант"
Sheets("Результат").Cells(15, 1) = "саморез"
Sheets("Результат").Cells(16, 1) = "зубчатое колесо"
Sheets("Результат").Cells(17, 1) = "крюк"
Sheets("Результат").Cells(18, 1) = "швеллер"
 
'в соответсвующие ячейки записываются цены каждой изготовленной детали
For i = 1 To 15
Sheets("Результат").Cells(3 + i, 2) = cena(i)
Next i
 
'в соответсвующие ячейки записываются количество
'деталей изготовленных за каждый день
For i = 1 To 15
For j = 1 To 5
    Sheets("Результат").Cells(3 + i, 2 + j) = koll(i, j)
'рассчитывается количество деталей каждого вида изготовленных за неделю
    koll_n(i) = koll_n(i) + koll(i, j)
Next j
'результат записывается в соответствующие ячейки
    Sheets("Результат").Cells(3 + i, 8) = koll_n(i)
Next i
 
'на листе "Результат" создаются ячейки с определенными названиями
Sheets("Результат").Activate
Sheets("Результат").Cells(20, 1) = "Результат в денежном эквиваленте"
Sheets("Результат").Cells(21, 1) = "Наименование изделия"
Sheets("Результат").Cells(21, 2) = "Стоимость 1 шт."
Sheets("Результат").Cells(21, 3) = "Заработано"
Sheets("Результат").Cells(22, 3) = "1-й день"
Sheets("Результат").Cells(22, 4) = "2-й день"
Sheets("Результат").Cells(22, 5) = "3-й день"
Sheets("Результат").Cells(22, 6) = "4-й день"
Sheets("Результат").Cells(22, 7) = "5-й день"
Sheets("Результат").Cells(22, 8) = "Всего"
Sheets("Результат").Cells(23, 1) = "болт"
Sheets("Результат").Cells(24, 1) = "винт"
Sheets("Результат").Cells(25, 1) = "гайка"
Sheets("Результат").Cells(26, 1) = "шайба"
Sheets("Результат").Cells(27, 1) = "шуруп"
Sheets("Результат").Cells(28, 1) = "гвоздь"
Sheets("Результат").Cells(29, 1) = "скрепка"
Sheets("Результат").Cells(30, 1) = "сверло"
Sheets("Результат").Cells(31, 1) = "шпилька"
Sheets("Результат").Cells(32, 1) = "дюпель"
Sheets("Результат").Cells(33, 1) = "шкант"
Sheets("Результат").Cells(34, 1) = "саморез"
Sheets("Результат").Cells(35, 1) = "Зубчатое колесо"
Sheets("Результат").Cells(36, 1) = "крюк"
Sheets("Результат").Cells(37, 1) = "швеллер"
Sheets("Результат").Cells(38, 1) = "ИТОГО"
 
'во внешнем цикле происходит вывод стоимости одной детали
'и стоимости всех деталей, произведенных в данный период
For i = 1 To 15
'в этом цикле вычисляется сумма заработков по каждой детали за каждый день
'а также расчет заработной платы за каждый день
  For j = 1 To 5
      Sheets("Результат").Cells(22 + i, 2 + j) = koll(i, j) * cena(i)
      zar(j) = zar(j) + koll(i, j) * cena(i)
zar(6) = zar(6) + koll(i, j) * cena(i)
 Next j
    Sheets("Результат").Cells(22 + i, 2) = cena(i)
    Sheets("Результат").Cells(22 + i, 8) = cena(i) * koll_n(i)
Next i
 
 max_st_det = Application.WorksheetFunction.Max(Sheets("Результат").Range("H23:H37"))
 Sheets("Результат").Cells(41, 1) = "макс.стоимость=" & max_st_det
 For Each cel In Sheets("Результат").Range("H23:H37").Cells
   If cel.Value = max_st_det Then nazw = Sheets("Результат").Cells(cel.Row, 1)
 Next cel
 Sheets("Результат").Cells(40, 1) = "Тип детали с наибольшим заработком:"
 Sheets("Результат").Cells(40, 5) = nazw
 
 
'в соответствующие ячейки выводятся заработок рабочего за неделю
Sheets("Результат").Activate
Sheets("Результат").Cells(38, 8) = zar(6)
Sheets("Результат").Cells(39, 1) = "Заработок за неделю"
Sheets("Результат").Cells(39, 5) = zar(6)
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2011, 15:38
Помогаю со студенческими работами здесь

Вывести номер детали , изготовленной из материала максимальной плотности
помогите пж. программа с++

По номеру детали вывести ее название
127. Имеется пронумерованный список деталей: 1 – шуруп,2 – гайка, 3- винт, 4 – гвоздь, 5 болт. По номеру детали вывести ее название.

По номеру детали вывести на экран её название
Здраствуйте, в программировании не силен...но постепенно учусь.. Нужна помощь в написании программ, сам пытался, но значения...

Создать абстрактный тип данных (структура) - картина, у которой есть название, автор, стоимость
Создать абстрактный тип данных ( структура ) - картина , у которой есть название , автор , стоимость . Определить функцию , которая...

Вывести номер строки в массиве, сумма чисел которой максимальная
Пользователь вводит элементы двумерного массива. Необходимо вывести номер строки, сумма элементов которой максимальна. Добавлено через...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru