Если вы просто хотите, чтобы строка значений в строке 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
Вам необходимо использовать функцию SUBTOTAL . Функция SUBTOTAL игнорирует строки, которые были исключены фильтром.
Формула будет выглядеть следующим образом:
=SUBTOTAL(9,B1:B20)
Номер функции 9 сообщает ей использовать SUM функция в диапазоне данных B1: B20 .
Если вы « фильтруете » путем скрытия строк, номер функции должен быть обновлен до 109 .
=SUBTOTAL(109,B1:B20)
Номер функции 109 предназначен для SUM также функционируют, но скрытые строки игнорируются.
Когда вы используете автофильтр для фильтрации результатов, 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)). Если вам нужна помощь в настройке модуля, дайте мне знать.