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

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

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

Author24 — интернет-сервис помощи студентам
Есть табличка: в первом столбике записаны названия типов деталей, в другом столбике стоимость. Мне надо написать код, который выбирает максимальную цену и ниже таблицы выводит название детали, у которой эта максимальная стоимость! надеюсь нормально объяснила
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2011, 09:03
Ответы с готовыми решениями:

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

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

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

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

19
Заблокирован
09.09.2011, 10:35 2
Ленуська,
комментарии не все написал, т.к. каждую команду не хочется писать.
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
730 / 406 / 95
Регистрация: 19.12.2010
Сообщений: 756
09.09.2011, 10:36 3
как вариант.
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  [ТС] 4
Cпасибо всем большое! Очень помогли!
0
Заблокирован
09.09.2011, 10:48 5
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  [ТС] 6
For Each cel In - вот это что обозначает (особенно cel)
0
Заблокирован
09.09.2011, 12:43 7
Цитата Сообщение от Ленуська Посмотреть сообщение
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  [ТС] 8
Цитата Сообщение от Busine2009 Посмотреть сообщение
cel - это переменная, обозначающая ячейку.
For Each ... In ... Next - эта конструкция используется, чтобы просмотреть все элементы. Элементами могут быть книги, листы, ячейки.
В данном случае просматриваются все ячейки в заданном диапазоне [b2:b11]. Т.е. с помощью For Each ... In ... Next анализируется сначала ячейка b2, затем b3 и т.д
аааыы (( вставила кусок кода в программу, один раз сработало - верно указал деталь,но не указал стоимость. когда поменяля данные, деталь осталась таже
0
Заблокирован
09.09.2011, 13:18 9
Ленуська,
  1. а в каком столбце у вас находятся названия деталей и цены?
  2. на какой строке заканчиваются записи (имеется ввиду детали и цены)?
  3. в какой ячейке должны появится результаты (самая высокая цена и детали, имеющие эту цену)?
0
730 / 406 / 95
Регистрация: 19.12.2010
Сообщений: 756
09.09.2011, 13:21 10
Прикрепляю файл с работающим макросом.
Вложения
Тип файла: xls Стоимость деталей.xls (32.5 Кб, 53 просмотров)
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 14:02  [ТС] 11
Цитата Сообщение от Busine2009 Посмотреть сообщение
Ленуська,
1. а в каком столбце у вас находятся названия деталей и цены?
2. на какой строке заканчиваются записи (имеется ввиду детали и цены)?
3. в какой ячейке должны появится результаты (самая высокая цена и детали, имеющие эту цену)?
1. в первом столбце детали, в 8 цены (исправила на свои)
2. 37 (я исправила на свои)
3. ячейки тоже поставила свои (40 и 41)
0
730 / 406 / 95
Регистрация: 19.12.2010
Сообщений: 756
09.09.2011, 14:06 12
прикрепите свой файл. попробуем его настроить под ваши нужды.
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 14:07  [ТС] 13
Посмотрите пожалуйста,что в коде не так?
Вложения
Тип файла: xls Курсач.xls (68.5 Кб, 15 просмотров)
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 14:08  [ТС] 14
Цитата Сообщение от 19vitek Посмотреть сообщение
прикрепите свой файл. попробуем его настроить под ваши нужды.
уже прикрепила
0
730 / 406 / 95
Регистрация: 19.12.2010
Сообщений: 756
09.09.2011, 14:24 15
протестируйте. комментарии есть.
Вложения
Тип файла: xls Копия Курсач.xls (58.5 Кб, 18 просмотров)
0
Заблокирован
09.09.2011, 14:24 16
Удалил сообщение.
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 14:30  [ТС] 17
Цитата Сообщение от 19vitek Посмотреть сообщение
протестируйте. комментарии есть.
в отдельном макросе работает (я уже так пробовала), а чтобы в один код запихать? никак не получится?
0
730 / 406 / 95
Регистрация: 19.12.2010
Сообщений: 756
09.09.2011, 14:32 18
оформите мой макрос в виде процедуры и запихивайте в ваш код.
0
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 10
09.09.2011, 15:35  [ТС] 19
Ураааа, я даже допенькала как процедуру вставлять ) ну прям мегамозгом себя почувствовала ))
СПАСИБО ВСЕЕЕМ БОЛЬШОЕ!!!!!!

Добавлено через 40 минут
Ага, фиг там, рано обрадовалась
Можете еще посмотреть в чем причина: Когда я провожу проверку и на листе Нач_д ставлю везде единицы, то на листе результат в строчке 38 не единички появляются, а остается прежняя сумма
0
Заблокирован
09.09.2011, 15:38 20
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
09.09.2011, 15:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2011, 15:38
Помогаю со студенческими работами здесь

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

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

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

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


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

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