Как каждый суммирует только те строки в Excel, не отфильтрованном?

Если вы просто хотите, чтобы строка значений в строке 0 была объединена с ,, вы можете сделать следующее:

import pandas as pd
df = pd.DataFrame({"col1":[1,"x"],"col2":[2,"y"],"col3":[3,"z"]})
l = df.iloc[0,:].apply(str).values
s = ",".join(l)

Список будет выглядеть так:

>> print l
['1' '2' '3']
[ 117] И строка, которую вы получите:

>> print s
1,2,3
52
задан Ram 14 December 2015 в 11:23
поделиться

2 ответа

Вам необходимо использовать функцию SUBTOTAL . Функция SUBTOTAL игнорирует строки, которые были исключены фильтром.

Формула будет выглядеть следующим образом:

=SUBTOTAL(9,B1:B20)

Номер функции 9 сообщает ей использовать SUM функция в диапазоне данных B1: B20 .

Если вы « фильтруете » путем скрытия строк, номер функции должен быть обновлен до 109 .

=SUBTOTAL(109,B1:B20)

Номер функции 109 предназначен для SUM также функционируют, но скрытые строки игнорируются.

99
ответ дан 7 November 2019 в 09:18
поделиться

Когда вы используете автофильтр для фильтрации результатов, Excel даже не удосуживается их скрыть: он просто устанавливает высоту строка в ноль (по крайней мере, до 2003 года, не уверен в 2007).

Таким образом, следующая пользовательская функция должна дать вам старт, чтобы делать то, что вы хотите (протестировано с целыми числами, не играл ни с чем другим):

Function SumVis(r As Range)
    Dim cell As Excel.Range
    Dim total As Variant

    For Each cell In r.Cells
        If cell.Height <> 0 Then
            total = total + cell.Value
        End If
    Next

    SumVis = total
End Function

Редактировать:

Вам нужно создать модуль в рабочей книге, чтобы поместить функцию, затем вы можете просто вызвать его на своем листе, как и любую другую функцию (= SumVis (A1: A14)). Если вам нужна помощь в настройке модуля, дайте мне знать.

2
ответ дан 7 November 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: