Динамическое отображение общего количества услуг, выбранных с помощью VBA - Корзина - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть список поставщиков услуг, которые предлагают определенные услуги. Подобные услуги могут также предлагаться различными поставщиками услуг. я сталкиваюсь с проблемой, чтобы отобразить сумму на основе услуг, выбранных пользователями. Существует 3 таблицы.

  1. Таблица 1 - Услуги, добавленные в корзину (пользователь может добавить количество) https://i.stack.imgur.com/gTm5M.png

  2. Таблица 2 - Поставщик услуг, связанный с категориями, добавленными в корзину - задача состоит в том, чтобы показать общую стоимость.
    https://i.stack.imgur.com/XXLFL.png

  3. Таблица 3 - Необработанные данные с ценами, указанными поставщиками услуг.

enter image description here

До сих пор я только что добавил таблицу 1 и таблицу 2 в массив и теперь он должен соответствовать таблице 3

    Sub Button5_Click()

Set customer = ThisWorkbook.Sheets("CUSTOMER")
Set provider = Worksheets("PROVIDER_SETTINGS")

i = 0


NumSP = customer.Cells(Rows.Count, "I").End(xlUp).Row
Rng = "I1:I" & NumSP
j = NumSP - Excel.WorksheetFunction.CountBlank(customer.Range(Rng))


NumService = customer.Cells(Rows.Count, "E").End(xlUp).Row
Rng = "E1:E" & NumService
k = NumService - Excel.WorksheetFunction.CountBlank(customer.Range(Rng))

Dim ServiceProvider() As String  ' declare array for service provider
Dim Service() As String
On Error Resume Next
  ReDim ServiceProvider(0)
  ReDim Service(0)

'service providers inserted into array
 For x = 3 To j + 2
    sp = customer.Cells(x, 9).Value
    ServiceProvider(i) = sp
    i = i + 1
   ReDim Preserve ServiceProvider(i)

Next
c = 0

'services  inserted into array
 For y = 3 To k + 2
    noservice = customer.Cells(y, 5).Value
    Service(c) = noservice
    c = c + 1
    ReDim Preserve Service(c)
Next


Set Arg1 = provider.Range("H2:H100")
Set Arg2 = provider.Range("B2:B100")
Set Arg3 = provider.Range("C2:C100")
Set Arg4 = provider.Range("I2:I100")

pir = 3

For Pi = 0 To UBound(ServiceProvider)

Totalsum = 0

For pj = 0 To UBound(Service)

Count_1 = Application.WorksheetFunction.SumIfs(Arg1, Arg2, ServiceProvider(Pi), Arg3, Service(pj), Arg4, "Y")
Totalsum = Totalsum + Count_1
Next
customer.Cells(pir, 11).Value = Totalsum
pir = pir + 1

Next
End Sub

1 Ответ

1 голос
/ 25 апреля 2020
Sub Button5_Click()

Set customer = ThisWorkbook.Sheets("CUSTOMER")
Set provider = Worksheets("PROVIDER_SETTINGS")

i = 0


NumSP = customer.Cells(Rows.Count, "I").End(xlUp).Row
Rng1 = "I3:I" & NumSP
j = NumSP - Excel.WorksheetFunction.CountBlank(customer.Range(Rng1))


NumService = customer.Cells(Rows.Count, "E").End(xlUp).Row
Rng2 = "E3:E" & NumService
k = NumService - Excel.WorksheetFunction.CountBlank(customer.Range(Rng2))

Dim ServiceProvider() As String  ' declare array for service provider
Dim Service() As String
Dim qty() As Integer
On Error Resume Next
  ReDim ServiceProvider(0)
  ReDim Service(0)
  ReDim qty(0)

'service providers inserted into array
 For X = 3 To j + 2
    ServiceProvider(i) = customer.Cells(X, 9).Value
    i = i + 1
   ReDim Preserve ServiceProvider(i)

Next
c = 0

'services  inserted into array

 For y = 3 To k + 2
    Service(c) = customer.Cells(y, 5).Value
    c = c + 1
    ReDim Preserve Service(c)
Next
d = 0
For y = 3 To k + 2
    qty(d) = customer.Cells(y, 7).Value
    d = d + 1
    ReDim Preserve qty(d)
Next


Set Arg1 = provider.Range("H2:H100")
Set Arg2 = provider.Range("B2:B100")
Set Arg3 = provider.Range("C2:C100")
Set Arg4 = provider.Range("I2:I100")

pir = 3

For Pi = 0 To UBound(ServiceProvider)

Totalsum = 0

For pj = 0 To UBound(Service)

Count_1 = Application.WorksheetFunction.SumIfs(Arg1, Arg2, ServiceProvider(Pi), Arg3, Service(pj), Arg4, "Y") * qty(pj)
Totalsum = Totalsum + Count_1
Next
customer.Cells(pir, 11).Value = Totalsum
pir = pir + 1

Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...