VBA - сумма конкретных клеток - PullRequest
0 голосов
/ 22 октября 2018

Я заранее прошу прощения, если некоторые элементы моего вопроса кажутся немного расплывчатыми, однако я постараюсь быть как можно более конкретным.

У меня есть книга Excel, которая в настоящее время содержит ежедневную информацию о торговле акциями.Торговая активность каждого дня содержится в отдельной таблице.Снимок экрана, прикрепленный ниже, представляет собой пример / макет того, как выглядит рабочий день торговой деятельности.

daily worksheet

В рабочей книге также имеется главный рабочий лист, который содержит данные о торговых операциях за каждую неделю и за каждый месяц для каждого клиента.Ниже приведен еще один пример снимка экрана:

master

Имея это в виду, можно ли будет использовать VBA для проверки клиентаНазовите имя в каждом отдельном рабочем листе, проверьте столбец K для валовой комиссии и суммируйте общую сумму на главном рабочем листе?

Например, если клиент А торговал 50 000 12/10/2018 и 100 000 13/10/ 2018, их доход за неделю на мастер-листе будет составлять 150 000 после запуска VBA.

В настоящее время у меня есть VBA в книге, которая суммирует общий доход от торговли на мастер-лист, однако я быхотел бы добавить к этому с вышеупомянутой идеей.Буду очень признателен за любые предложения о том, как это сделать, так как я не смог понять это.Спасибо.

Sub AutoSum()
Dim wscount As Long
Dim i As Long
     wscount = ActiveWorkbook.Worksheets.Count
 For i = 1 To wscount
Sheets(i).Select
Range("K3").Select
 Selection.End(xlDown).Select
ActiveCell.Offset(2, 0).Select
Dim cel1 As String, cel2 As String
cel1 = ActiveCell.Offset(-2, 0).End(xlUp).Address
cel2 = ActiveCell.Offset(-1).Address
ActiveCell.Value = "=sum(" & (cel1) & ":" & (cel2) & ")"
Next i
End Sub

1 Ответ

0 голосов
/ 22 октября 2018

Ну, из-за сложности макроса, я не могу представить его вам, но я предложу, что вы можете сделать:

  1. Вы должны иметь всех клиентов вlist (я полагаю, он есть в вашей главной таблице)
  2. Для каждого клиента вам нужно найти, где he7she находится на каждом рабочем листе, поэтому для каждого клиента и для каждого рабочего листа вы используете Application.WorkSheetFunction.Совпадение, так что вы получите строку, где находится клиент (мы назовем ее строкой)
  3. , затем вы будете использовать накопительную переменную для сохранения суммы для каждого рабочего листа, если вы кодируете totalalsum = totalsum + worksheet (j) .cells (строка, 11 -> , что означает K )

Наконец, я порекомендую вам форму, в которой вы отправите начальную и конечную дату, чтобы вы получилизначение в соответствии с датами

Надеюсь, это поможет немного

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