query で Pivot したデータの合計値の列を追加

MMULTIで合計値を計算できるが,色々はまったのでめも。

[月別元データ]シートの内容

=query(
  importrange("スプレッドシートのキー", "マージ!B:S"),
  "Select Col12, sum(Col18), sum(Col17) Where Col7 = '●' Group by Col12 Pivot year(Col1), month(Col1)+1 Label sum(Col18) '元本', sum(Col17) '評価額'"
)
<||

元データを引っ張る。
>||
=offset('月別元データ'!A1, 1, 1, counta('月別元データ'!A2:A), counta('月別元データ'!B1:1)) 

転置して,数値化

=TRANSPOSE( arrayformula( offset('月別元データ'!A1, 1, 1, counta('月別元データ'!A2:A), counta('月別元データ'!B1:1)) * 1))

かけ合わせるベクトルを作る

=ARRAYFORMULA(OFFSET('月別元データ'!A1, 1, 1, counta('月別元データ'!A2:A), 1)^0)

かけ合わせて,転置。合計値行を作る

=transpose(MMULT( TRANSPOSE( arrayformula( offset('月別元データ'!A1, 1, 1, counta('月別元データ'!A2:A), counta('月別元データ'!B1:1)) * 1) ), ARRAYFORMULA(OFFSET('月別元データ'!A1, 1, 1, counta('月別元データ'!A2:A), 1)^0)) )

合計値の列を追加

={offset('月別元データ'!A1, 0, 0, counta('月別元データ'!A:A), counta('月別元データ'!1:1)); 
"合計",transpose(MMULT( TRANSPOSE( arrayformula( offset('月別元データ'!A1, 1, 1, counta('月別元データ'!A2:A), counta('月別元データ'!B1:1)) * 1) ), ARRAYFORMULA(OFFSET('月別元データ'!A1, 1, 1, counta('月別元データ'!A2:A), 1)^0)) )}