#excel #vba
#excel #vba
Вопрос:
В моем файле Excel есть несколько строк, связанных с одной и той же страной.
Мне нужно отфильтровать по коду ISO страны, затем суммировать квартальные данные за 2015 год, чтобы создать новый столбец с суммой, но суммой только с видимыми ячейками.
Затем повторите это для следующих лет (2016, 2017 и т. Д.).
Затем суммируйте итоги строк (например, за 2015 год) и скопируйте сумму в другую ячейку на другом листе того же файла.
Ниже вы можете найти мою попытку. Я запускаю два отдельных макроса:
MACRO1
Sub Macro1()
Dim LR As Long
Sheets("WEBSTATS_DEBTSEC_DATAFLOW_csv_c").Select
Sheets("WEBSTATS_DEBTSEC_DATAFLOW_csv_c").Range("$A$1:$BF$218591").AutoFilter Field:=3, Criteria1:="SA"
LR = Range("AJ" amp; Rows.Count).End(.xlUp).Row
Range("AJ2" amp; LR).SpecialCells(xlCellTypeVisible).Select
End sub
МАКРОС2
Sub Macro2()
Sheets("Country Total").Select
Range("B10").Select
ActiveCell.FormulaR1C1 = "=SUM(WEBSTATS_DEBTSEC_DATAFLOW_csv_c!R[346]C[36]:R[174666]C[36])"
End Sub
Комментарии:
1. Зачем вам нужно фильтровать, а затем суммировать только видимые элементы? Не будет ли стандартная функция Sumifs() работать для решения этой проблемы?
Ответ №1:
Я не думаю, что в этом случае необходимо использовать функцию фильтра. На самом деле даже VBA не нужен. Вы можете просто использовать SUMIF в Excel (https://exceljet.net/excel-functions/excel-sumif-function ) функция для данного конкретного случая.
Если вы хотите продолжать использовать функцию фильтра Excel (например, если вы хотите иметь возможность добавлять дополнительные критерии позже), функция Excel ПОДВЕДЕТ ПРОМЕЖУТОЧНЫЙ ИТОГ (https://support.microsoft.com/en-us/office/subtotal-function-7b027003-f060-4ade-9040-e478765b9939 ) функция может использоваться только для применения операции (т.е. суммирования) к «видимым» (= отфильтрованным) строкам