Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
14 / 14 / 2
Регистрация: 27.11.2011
Сообщений: 697
1

Цена товаров

02.09.2013, 22:01. Показов 827. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, уважаемые профессионалы!!! Есть задачка: прилагаю файл ёкселя 2010. На листе список товаров и цены, у кого в долларах, у кого в евро. Кнопку на лист добавил. Нужен макрос, который выбирает товары из списка с ценой по долларам и записывает их в отдельный лист "Цена в долларах" и считает общую сумму. Также выбирает товары с ценой в евро, записывает их в лист "Цена в евро" и считает общую сумму. Формат чисел обыкновенно денежный ($ США и 123 евро). Возможно ли программно различить денежные форматы в ячейках??? Помогите пожалуйста с макросом!!! Заранее Спасибо!!!
Вложения
Тип файла: xls Cena.xls (34.0 Кб, 9 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2013, 22:01
Ответы с готовыми решениями:

Даны наименования товаров, их количество, цена за одну штуку
Даны наименования товаров, их количество, цена за одну штуку. Вывести таблицу товаров,...

Вывести название товаров, цена которых меньше заданной
Поместить в массив запись с именем tovar с полями kod (тип -integer), nazvanie ( тип...

Вывести список товаров, цена на которые не превышает заданного числа
Ребят, я запутался с файлами записей. Выводится в файл put.txt какая-то фигня: куча пробелов,...

Сформировать новый список типа стек из товаров, цена которых больше Х и меньше Y
Построить односвязный список типа стек.Элементы списка есть данные из прайс-листа, содержащего...

7
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
02.09.2013, 23:43 2
Я просто поигрался рекордером и форматами. Но, думаю, лучше бы попробовать FindFormat. А в общем - смотрите.
Вложения
Тип файла: xls New_Cena.xls (47.5 Кб, 6 просмотров)
0
14 / 14 / 2
Регистрация: 27.11.2011
Сообщений: 697
03.09.2013, 08:13  [ТС] 3
Спасибочки огромное!!! Теперь осталось их в рахные листы записать. Дай Вам БОГ здоровья!!!

Добавлено через 7 минут
А как сделать, чтобы он посчитал общую сумму по долларам и по евро???
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.09.2013, 10:15 4
Если чуть изменить фортмат, тогда код будет не работать. Поэтому я изменил - теперь он реагирует не на конкретный формат, а на символы доллара и евро. Так надежней. Добавил Вам суммы. Но, думаю, лучше на нужных листах UsedRange просто преобразовать в ListObject. Ну а по листам сами разнесете, главное, что у Вас все в массивах. Тут просто рутина. Проверить, есть/нет такой лист (товар в дол., товар в евро), если нет - создать и вставить на него нужный массив в нужное место. Если есть - очистить полностю и вставить на него нужный массив в нужное место. И так два раза.
А так - старый код замените полностью этим.
Кликните здесь для просмотра всего текста
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
Sub MyFinFormat()
Dim euro(), dollar(), i&, j&, mSTR$, cC As Range
   ReDim euro(1 To Range([b4], Cells(Rows.Count, 2).End(xlUp)).Rows.Count, 1 To 2)
   ReDim dollar(1 To Range([b4], Cells(Rows.Count, 2).End(xlUp)).Rows.Count, 1 To 2)
   i = 0: j = 0
      For Each cC In Range([b4], Cells(Rows.Count, 2).End(xlUp))
         If InStr(1, cC.NumberFormat, Chr(36) & Chr(36), vbTextCompare) <> 0 Then
            i = i + 1: dollar(i, 1) = cC.Offset(0, -1).Value: dollar(i, 2) = cC.Value
         End If
          If InStr(1, cC.NumberFormat, Chr(136), vbTextCompare) <> 0 Then
            j = j + 1: euro(j, 1) = cC.Offset(0, -1).Value: euro(j, 2) = cC.Value
         End If
      Next
   [b4].Offset(0, 2).Resize(UBound(dollar, 1), 2).Value = dollar
   Range([b4].Offset(0, 3), Cells(Rows.Count, _
         [b4].Offset(0, 3).Column).End(xlUp)).NumberFormat = "[$$-409]#,##0"
 '--sum--Dollars------------------------------------------
   With [b4].Offset(0, 3).End(xlDown)
      .Offset(2, -1).Value = "Sum 1"
      .Offset(2, 0).NumberFormat = "[$$-409]#,##0"
      .Offset(2, 0).Value = Application.Sum(Range([b4].Offset(0, 3), Cells(Rows.Count, _
         [b4].Offset(0, 3).Column).End(xlUp)))
   End With
'==End==sum==Dollars============================
   [b4].Offset(0, 5).Resize(UBound(euro, 1), 2).Value = euro
   Range([b4].Offset(0, 6), Cells(Rows.Count, _
         [b4].Offset(0, 6).Column).End(xlUp)).NumberFormat = "#,##0 [$ˆ-1]"
 '--sum--EURO------------------------------------------
    With [b4].Offset(0, 6).End(xlDown)
      .Offset(2, -1).Value = "Sum 2"
      .Offset(2, 0).NumberFormat = "#,##0 [$ˆ-1]"
      .Offset(2, 0).Value = Application.Sum(Range([b4].Offset(0, 6), Cells(Rows.Count, _
         [b4].Offset(0, 6).Column).End(xlUp)))
   End With
'==End==sum==EURO============================
End Sub
1
14 / 14 / 2
Регистрация: 27.11.2011
Сообщений: 697
03.09.2013, 13:20  [ТС] 5
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.09.2013, 17:46 6
Мне уже мое сегодня надоело. Отвлекаюсь, игрался с Вашим. Пробуйте так.
Вложения
Тип файла: xls ListObj_Cena.xls (60.5 Кб, 9 просмотров)
0
14 / 14 / 2
Регистрация: 27.11.2011
Сообщений: 697
03.09.2013, 19:24  [ТС] 7
Дай Вам БОГ здоровья!!! Буду помаленьку разбираться!!! Спасибо Вам ещё раз!!!
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.09.2013, 19:41 8
А что там разбираться. Что б было легче, разбил на блоки (зеленые коменты). Единственное, если нужно сортрировку, тогда сразу после фразы
.ListObjects("TableEURO").ShowTotals = True
вставьте:
Visual Basic
1
2
3
With .Range("TableEURO")
   .Sort .Cells(1), xlAscending, , Header:=xlYes
End With
и, соотверственно, после фразы
.ListObjects("TableDOLLAR").ShowTotals = True
вставьте это, аналогичное предыдущему:
Visual Basic
1
2
3
With .Range("TableDOLLAR")
   .Sort .Cells(1), xlAscending, , Header:=xlYes
End With
И рекомендую больше времени приделить ListObjects. Интересный инструмент. Удачи.
0
03.09.2013, 19:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2013, 19:41
Помогаю со студенческими работами здесь

Цена в отчете "Партии товаров на складах"
Добрый день! Подскажите, пожалуйста, как изменить в отчете партий товаров на складах стоимость...

Добавление в базу данных товаров, удаление товаров, редактирование товаров
Подскажите, насколько сложно и вообще можно ли реализовать на WP следующие вещи. 1) Добавление в...

Создайте файл, содержащий записи следующей структуры: наименование товара, старая цена, новая цена.
Создайте файл, содержащий записи следующей структуры: наименование товара, старая цена, новая цена....

Как прописать в Access (форме) чтобы автоматически выводилась цена, Клиент вводит код и появляется цена
Как прописать в MS Access, чтобы в бланке заказа (когда пользователь добавляет товар) цена...


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

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