Страницы: 1 2 След.
RSS
Формирование заказа на основе выделенных позиций в прайсе
 
Надо что бы с листа Прайс, были выбраны только те позиции, который закажет клиент из столбца Заказ. И перенесены на новую страницу, где будет уже указана суммарная стоимость заказа, и отдельно сумма всех заказанных позиций (это вроде работает, но ещё не доехал до них) Не могу понять в чём косяк, нашёл файл пытался под себя сделать. Запутался.  
 
Цитата
Потерялся в макросе
А где макрос-то?
На листе Заказ что должно подтягиваться в столбец Заказ?
 
только выбранные позиции с листа прайс
Я подумал проще будет скинуть файл)
 
Цитата
kehrypy написал:
Я подумал проще будет скинуть файл
проще. А теперь откройте файл и найдите там макрос :) У Вас файл .xlsx - а они не могут хранить макросы. Чтобы макросы сохранились в файле надо сохранять в формате "Книга с поддержкой макросов(.xlsm)"

И главное: ознакомьтесь с правилами: сейчас название тема не отражает суть задачи. А значит тема - кандидат как минимум на закрытие. Предложите в новом сообщении название темы, согласно правил. Модераторы придут и изменят.
Изменено: The_Prist - 21.11.2017 09:27:07
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
Sub test()
Dim rng As Range, mass(), wsh As Worksheet, flag As Boolean, wName As String, i As Long, RowsNumber As Long
Dim TotalSum As Currency

Application.ScreenUpdating = False

wName = "Заказ"
For Each wsh In ActiveWorkbook.Worksheets
    If wsh.Name = wName Then
        flag = True
    End If
Next wsh


If flag Then
    ActiveWorkbook.Worksheets(wName).UsedRange.Clear
Else
    Set wsh = ActiveWorkbook.Sheets.Add(, Worksheets("Прайс"))
    wsh.Name = wName
End If


Set wsh = Worksheets(wName)
wsh.Range("A1").Value = "Группа"
wsh.Range("B1").Value = "Артикул"
wsh.Range("C1").Value = "Наименование"
wsh.Range("D1").Value = "Производство"
wsh.Range("E1").Value = "Цена"
wsh.Range("F1").Value = "Заказ"

Set rng = Worksheets("Прайс").Range("A3").Resize(Worksheets("Прайс").Range("A3").CurrentRegion.Rows.Count, 6)
mass() = rng.Value

For i = 1 To UBound(mass, 1)
    If IsNumeric(mass(i, 6)) And Not IsEmpty(mass(i, 6)) And mass(i, 6) <> 0 Then
        RowsNumber = wsh.UsedRange.Rows.Count
        wsh.Range("A1").Offset(RowsNumber, 0).Value = mass(i, 1)
        wsh.Range("B1").Offset(RowsNumber, 0).Value = mass(i, 2)
        wsh.Range("C1").Offset(RowsNumber, 0).Value = mass(i, 3)
        wsh.Range("D1").Offset(RowsNumber, 0).Value = mass(i, 4)
        wsh.Range("E1").Offset(RowsNumber, 0).Value = mass(i, 6)
        wsh.Range("F1").Offset(RowsNumber, 0).Value = mass(i, 5) * mass(i, 6)
        TotalSum = TotalSum + mass(i, 5) * mass(i, 6)
    End If
Next i

wsh.UsedRange.Borders.LineStyle = xlContinuous
wsh.UsedRange.Borders.Weight = xlThin
wsh.Columns("A:D").EntireColumn.AutoFit

wsh.Range("A1").Offset(RowsNumber + 1, 0).Resize(1, 6).Borders(xlEdgeBottom).LineStyle = xlContinuous

wsh.Range("A1").Offset(RowsNumber + 3, 0).Value = "Итого:"
wsh.Range("D1").Offset(RowsNumber + 3, 0).Value = TotalSum

wsh.Columns("A:D").EntireColumn.AutoFit

wsh.Activate

Application.ScreenUpdating = True


End Sub
Изменено: kehrypy - 21.11.2017 10:56:00
 
Да еще и кросс, похоже: http://www.cyberforum.ru/vba/thread2125823.html
 
Можно тему назвать:
Формирование заказа на основе выделенных позиций в прайсе
Цитата
только выбранные позиции с листа прайс
Код
Sub Tablica()
Dim i As Long
Dim iLastRow As Long
Dim iLR As Long
 iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
 With Worksheets("Заказ")
  iLR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
  .Range("A2:F" & iLR).ClearContents
   For i = 10 To iLastRow
     If Not IsEmpty(Cells(i, "G")) Then
       iLR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
       Range("A" & i & ":E" & i).Copy .Cells(iLR, "A")
     End If
   Next
       iLR = .Cells(.Rows.Count, "A").End(xlUp).Row
       .Cells(iLR + 2, "A") = "Итого:"
       .Cells(iLR + 2, "E") = WorksheetFunction.Sum(.Range(.Cells(2, "E"), .Cells(iLR, "E")))
       .Activate
 End With
End Sub
 
Цитата
Казанский написал:
Да еще и кросс, похоже
там посоветовали обратиться сюда
 
Kuzmich, в область заказа не попадают выбранное количество позиций с листа прайса. Цена которая стоит должна быть уже суммой этого количества выбранного покупателем:(
извините что я может как то не точно выражаюсь, пока что
 
Цитата
В область заказа не попадают выбранное количество позиций с листа прайса
Попробуйте дописать сами в макрос это действие.
Я вас спрашивал о том, что должно быть в столбце Заказ.
 
А как сделать что бы в столбце заказ было конкретно количество ( тоесть в листе прайс я выбрал эту позицию 1, следующую три, и он показывал в листе заказа что я выбрал три, а чего один) а столб цена был равен количеству одной цены за штуку на количество заказа. не грамотен я маленько в этом, вот и прошу помочь =\ извините уж за тупость, я пока ещё тут не грамотен
Изменено: kehrypy - 21.11.2017 10:56:56
 
kehrypy, не нужно цитировать без необходимости - кнопка цитирования не для ответа!
А код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте свой #6.
 
Исправил.
Ребят, подскажите как все ж сделать? Не шарю я в макросах, так, поискал инфу с интернета и вышел на Вас
Изменено: kehrypy - 21.11.2017 11:39:38
 
Цитата
а столб цена был равен количеству одной цены за штуку на количество заказа
У вас на листе Прайс есть столбец Кол-во. Его как учитывать?
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

Его вообще не учитывать. Это для меня инфо. мб и не будет столбца такого
 
Добавьте в цикл строки
Код
   For i = 10 To iLastRow
     If Not IsEmpty(Cells(i, "G")) Then
       iLR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
       Range("A" & i & ":D" & i).Copy .Cells(iLR, "A")
       .Cells(iLR, "E") = Cells(i, "E") * Cells(i, "G")
       .Cells(iLR, "F") = Cells(i, "G")
     End If
   Next
 
Спасибо большое! вроде всё как хотел) буду обращаться как возникнут трудности :D
 
А как сделать что бы строка 4000+ тоже была выбрана при нажатии кнопки заказ?
И таблица чего-то не вся отображается, теряются порой строки и прочее..в чем может быть проблем
 
Цитата
теряются порой строки и прочее..в чем может быть проблем
Приведите пример
Цитата
строка 4000+
Что за строка?
 
Вместо того, чтобы написать "Строка 4775" прикрепили скрин )) Что он даёт?
 
При нажатии кнопки заказа, строки ниже четырёх тысяч не попадают почему то под результат
 
Не почему то, а потому что последняя строка определяется по другому столбцу, измените на D или E, смотря какие там обычно файлы. Или определяйте сразу по нескольким столбцам (хоть 10), берите максимальное значение.
 
Цитата
Hugo написал:
измените на D или E
это где мне поменять? Простите за неграмотность
 
kehrypy, написал
Цитата
это где мне поменять?
В коде последняя строка на листе Прайс определяется по столбцу А строкой
Код
iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
Из скрина экрана в сообщении #20 у вас в столбце А нет значений, определяйте
последнюю строку по столбцу D или E
 
После нажатия кнопки заказа отображалось что бы количество заказа ещё (теперь понадобилось)
 
Цитата
отображалось что бы количество заказа ещё (теперь понадобилось)
Код
Sub Tablica()
Dim i As Long
Dim iLastRow As Long
Dim iLR As Long
 iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
 With Worksheets("Заказ")
  iLR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
  .Range("A2:F" & iLR).ClearContents
   Range("A9:F9").Copy .Cells(1, "A")     'копирование шапки
   For i = 10 To iLastRow
     If Not IsEmpty(Cells(i, "G")) Then
       iLR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
       Range("A" & i & ":F" & i).Copy .Cells(iLR, "A")
     End If
   Next
       iLR = .Cells(.Rows.Count, "A").End(xlUp).Row
       .Cells(iLR + 2, "A") = "Итого:"
       .Cells(iLR + 2, "E") = WorksheetFunction.Sum(.Range(.Cells(2, "E"), .Cells(iLR, "E")))
       .Cells(iLR + 2, "E").NumberFormat = "#,##0.00"
       .Activate
 End With
End Sub
 
Спасибо, помог Ваш макрос, ещё там добавил что бы строка заказа была указана
Код
Range("A2:G" & iLR).ClearContents
   Range("A9:G9").Copy .Cells(1, "A")     '??????????? ?????
   For i = 10 To iLastRow
     If Not IsEmpty(Cells(i, "G")) Then
       iLR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
       Range("A" & i & ":G" & i).Copy .Cells(iLR, "A")
Изменено: kehrypy - 13.02.2018 09:24:49
 
А как ещё сделать итоговую сумму всех этих товаров на листе заказа? Следуя из количества и цены
Изменено: kehrypy - 13.02.2018 09:46:13
 
Добрый день!

С помощью обычной Сводной таблицы (PivotTable) и 2-ч мааааленьких макросов.
Изменено: Михаил Лебедев - 13.02.2018 09:56:07
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
С помощью сводной таблицы у Вас сумма по цене не сходится, а в макросе сразу вписать что бы расчёт был не выйдет?
Страницы: 1 2 След.
Наверх