Промежуточный итог и количество в одном макросе строки

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

 Range("A2:K2", ActiveCell.End(xlDown)).Select
Selection.CurrentRegion.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(1, 7, 8), _
    Replace:=True, PageBreaks:=False, SummaryBelowData:=True
Selection.CurrentRegion.Subtotal GroupBy:=2, Function:=xlCount, TotalList:=Array(4), _
    Replace:=False, PageBreaks:=False, SummaryBelowData:=True

Это приводит к промежуточным итогам, которые я хочу видеть в столбцах 1, 7 и 8, но строка вставляется над промежуточными итогами, а количество представлено в столбце 4 на одну строку выше промежуточных итогов. Я пробовал разные варианты истинных/ложных утверждений в конце. Я также попытался добавить «фиктивный» столбец из 1 рядом с каждым кредитом, но затем я хочу скрыть «фиктивный» столбец, чтобы отчет уместился на одном листе бумаги, и я не знаю, как компенсировать полученный результат. промежуточный итог, поскольку количество кредитов, выданных различными кредитными экспертами вне политики, будет варьироваться в зависимости от периода. Есть ли способ сделать это?


person Henchman21    schedule 15.08.2014    source источник
comment
Спасибо, но как мне это сделать? Из того, что я прочитал об этом на выходных, мне нужно что-то похожее на: Dim rng As Range Set rng = ("D3:D35565") For Each cCell In rng If rng.Cells.Formula Like "SUBTOTAL(9,*:*)" Then ActiveCell.Formula = SUBTOTAL(2,*:*) End If Next cCell Однако у меня неправильный синтаксис. Это как я должен подойти к проблеме? (Компилятору особенно не нравятся подстановочные знаки в выражении SUBTOTAL(2,*:*), но я хочу изменить только часть SUBTOTAL(9, как вы сказали.   -  person Henchman21    schedule 18.08.2014
comment
Вот и все! Мне нужно было использовать промежуточный итог (3 вместо этого, но это сработало! Я не вижу, где я могу проголосовать за @pnuts, или у меня недостаточно репутации, но я хочу, чтобы все, кто ищет этот вопрос, знали, что это ответ!   -  person Henchman21    schedule 20.08.2014
comment
Если вы соберетесь ответить, я выберу его как правильный. Тем временем я процитировал и разместил вашу работу ниже на случай, если другие ищут то же самое.   -  person Henchman21    schedule 20.08.2014


Ответы (1)


Как было решено в комментариях выше, чтобы в моем отчете были промежуточные итоги в соответствующих столбцах (в данном случае 1, 7 и 8) и счет в соответствующем столбце (столбец 4 в этом случае), следующий код прекрасно работает:

Range("A2:K2", ActiveCell.End(xlDown)).Select
Selection.CurrentRegion.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(1, 7, 8), _
    Replace:=True, PageBreaks:=False, SummaryBelowData:=True
Columns(4).Replace What:="subtotal(9", Replacement:="subtotal(3", LookAt:=xlPart

Помните, что если вы хотите подсчитать ВСЕ ячейки в диапазоне, используйте функцию CountA: "промежуточный итог (3). Если вам требуется подсчет только ячеек, содержащих числа (например, исключая логические значения, текст, значения ошибок и т. д.). .,), затем используйте функцию Count: "промежуточный итог (2".

Еще раз спасибо pnuts за правильный ответ!

person Henchman21    schedule 20.08.2014