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

Макрос для выбора цены и количества

05.03.2015, 17:51. Показов 2768. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой шаблон.в нём необходимо сравниваем товар по артикулу с цветом.Если совпадает выбираем Большую цену.
И второй макрос выбираем по артикулу цвету и размеру и схлопываем количество.Буду весьма благодарен!
Вложения
Тип файла: xlsx Лист Microsoft Excel (2).xlsx (20.6 Кб, 18 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2015, 17:51
Ответы с готовыми решениями:

Макрос для добавления строки после выбора пункта со спадающего меню
Здравствуйте. Прошу помощи в написании макроса. Задание заключается в: 1) При выборе в строке значения из спадающего меню должна...

Макрос для проверки на кратность количества при вводе
Здравствуйте, уважаемые форумчане! Я недавно начала изучать VBA и столкнулась с такой задачкой: Есть таблица, в которой имеются...

Макрос для подсчета количества необходимых элементов таблицы
Доброго времени суток! Когда-то давно в университете учили писать макросы, думал что не пригодится... Столкнулся с такой проблемой, что...

23
8 / 8 / 0
Регистрация: 23.02.2013
Сообщений: 81
12.03.2015, 15:53  [ТС]
Студворк — интернет-сервис помощи студентам
её потом функцией удалить дубликаты
0
 Аватар для KoGG
5730 / 1633 / 419
Регистрация: 23.12.2010
Сообщений: 2,455
Записей в блоге: 1
12.03.2015, 16:26
Лучший ответ Сообщение было отмечено cfkhellboy1992 как решение

Решение

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
Sub Проставить_максимальные_цены()
    Const StartRow% = 5
    Dim A, i&, LastRow&, S$, Dic2
    With Application
         .Calculation = xlCalculationManual
         .ScreenUpdating = False
         LastRow = Cells(Rows.Count, 2).End(xlUp).Row
         A = ActiveSheet.Range("A1:R" & LastRow).Value
         Set Dic2 = CreateObject("Scripting.Dictionary")
         With CreateObject("Scripting.Dictionary")
             For i = StartRow To UBound(A)
                 S = Trim$(A(i, 2)) & Trim$(A(i, 8))
                 If .Item(S) < A(i, 15) Then
                    .Item(S) = A(i, 15)
                    Dic2.Item(S) = A(i, 17)
                 End If
             Next i
             For i = StartRow To UBound(A)
                 S = Trim$(A(i, 2)) & Trim$(A(i, 8))
                 If A(i, 15) < .Item(S) Then
                    Cells(i, 15) = .Item(S)
                    Cells(i, 17) = Dic2.Item(S)
                 End If
             Next i
         End With
         Set Dic2 = Nothing
        .Calculation = xlCalculationAutomatic
    End With
End Sub
 
Sub Суммировать_строки()
    Const StartRow% = 5
    Dim A, U() As Boolean, i&, LastRow&, S$
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        LastRow = Cells(Rows.Count, 2).End(xlUp).Row
        A = ActiveSheet.Range("A1:R" & LastRow).Value
        ReDim U(1 To UBound(A))
        With CreateObject("Scripting.Dictionary")
        For i = StartRow To UBound(A)
            S = Trim$(A(i, 2)) & Format$(A(i, 7)) & Trim$(A(i, 8))
            If .Exists(S) Then
                U(i) = True
            End If
            .Item(S) = .Item(S) + A(i, 14)
        Next i
        For i = UBound(A) To StartRow Step -1
            If U(i) Then
               Rows(i).Delete Shift:=xlUp
            Else
               S = Trim$(A(i, 2)) & Format$(A(i, 7)) & Trim$(A(i, 8))
               Cells(i, 14) = .Item(S)
            End If
        Next i
        End With
        .Calculation = xlCalculationAutomatic
    End With
End Sub
1
8 / 8 / 0
Регистрация: 23.02.2013
Сообщений: 81
13.03.2015, 15:18  [ТС]
Жесть!пашит!вы чемпион по vba)

Добавлено через 20 часов 33 минуты
А можно сделать чтоб последние два столбца с ценами тоже выбиралась максимлаьная цена не только первый?

Добавлено через 1 час 57 минут
а ещё если теже условия но колличества не сплюсовывать а выбрать наибольшее
0
 Аватар для KoGG
5730 / 1633 / 419
Регистрация: 23.12.2010
Сообщений: 2,455
Записей в блоге: 1
16.03.2015, 16:38
Лучший ответ Сообщение было отмечено cfkhellboy1992 как решение

Решение

Можно и так.
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
Sub Проставить_максимальные_цены()
    Const StartRow% = 5
    Dim A, i&, LastRow&, S$, Dic2, Dic3
    With Application
         .Calculation = xlCalculationManual
         .ScreenUpdating = False
         LastRow = Cells(Rows.Count, 2).End(xlUp).Row
         A = ActiveSheet.Range("A1:R" & LastRow).Value
         Set Dic2 = CreateObject("Scripting.Dictionary")
         Set Dic3 = CreateObject("Scripting.Dictionary")
         With CreateObject("Scripting.Dictionary")
             For i = StartRow To UBound(A)
                 S = Trim$(A(i, 2)) & Trim$(A(i, 8))
                 If .Item(S) < A(i, 15) Then
                    .Item(S) = A(i, 15)
                 End If
                 If Dic2.Item(S) < A(i, 16) Then
                    Dic2.Item(S) = A(i, 16)
                 End If
                 If Dic3.Item(S) < A(i, 17) Then
                    Dic3.Item(S) = A(i, 17)
                 End If
             Next i
             For i = StartRow To UBound(A)
                 S = Trim$(A(i, 2)) & Trim$(A(i, 8))
                 If A(i, 15) < .Item(S) Then
                    Cells(i, 15) = .Item(S)
                 End If
                 If A(i, 16) < Dic2.Item(S) Then
                    Cells(i, 16) = Dic2.Item(S)
                 End If
                 If A(i, 17) < Dic3.Item(S) Then
                    Cells(i, 17) = Dic3.Item(S)
                 End If
             Next i
         End With
         Set Dic2 = Nothing: Set Dic3 = Nothing
        .Calculation = xlCalculationAutomatic
    End With
End Sub
 
Sub Оставить_строки_с_макс_количеством()
    Const StartRow% = 5
    Dim A, N&(), i&, LastRow&, S$
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        LastRow = Cells(Rows.Count, 2).End(xlUp).Row
        A = ActiveSheet.Range("A1:R" & LastRow).Value
        ReDim N(0 To UBound(A))
        With CreateObject("Scripting.Dictionary")
        For i = StartRow To UBound(A)
            S = Trim$(A(i, 2)) & Format$(A(i, 7)) & Trim$(A(i, 8))
            If N(.Item(S)) < A(i, 14) Then
               .Item(S) = i
               N(.Item(S)) = A(i, 14)
            End If
        Next i
        For i = UBound(A) To StartRow Step -1
            S = Trim$(A(i, 2)) & Format$(A(i, 7)) & Trim$(A(i, 8))
            If .Item(S) <> i Then Rows(i).Delete Shift:=xlUp
        Next i
        End With
        .Calculation = xlCalculationAutomatic
    End With
End Sub

Не по теме:

Привет из Шарм-Эль-Шейха.

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.03.2015, 16:38

Простенький макрос, который перебирает артикулы и натаскивает из столбцов цены
Добрый день! У меня появилась следующая задача в excel. 3 столбца: - артикула с сайта; - артикула с оптового...

Вывод цены товара сразу же по изменении его количества
РЕбята! Всем привет! Нужна ваша помощь! Задача следующая: есть таблица из трех столбцов: количество овощей на складе, &quot;цена&quot;,...

Макрос выбора нескольких позиций в фильтре
Привет!! :) Я совсем новенький как на вашем форуме, так и в мире программирования - приходится учиться на новой работе:) готов...

Макрос: Написать макрос по сравнению двух таблиц для нахождения несоответствий...
знатоки, прошу помощи в еще одном деле: есть два листа, --в одном список: яблоко, груша, слива, --во втором: яблоко, груша ...

Макрос по поиску чисел в Worde и выводу их количества
Необходим макрос по поиску чисел в word файле! макрос создается через vb в worde 2007! нашел пример с пробелами, но не смог его...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru