[[FrontPage]] *概要 [#k21c72c2] -システム化を待つ間にどうしても管理を Excel でやらなければならないことがある *ベストプラクティス [#ja7a9bf4] -Excel 芸をしない -生データのシートと計算式のシートは完全に分ける --どうしても面倒なら、生データは A:Z に押し込めて、計算式は AA:AZ などを利用する。 -異なる質の計算は AA:AZ や BA:BZ など、26 行ごとにパーティショニングしたところに押し込める。 -ARRAYFORMULA や QUERY をなるべく使って、シート変更時の対象を 1 セルに限定する。 -適切に改行する、コメントアウトするなど読みやすくする。特に QUERY 関数。 *関数 [#dacf2618] **文字列結合 [#g4fe3976] -="A"&3 --& 演算子を使い、CONCATENATE, CONCAT は使わない(面倒なので) **ショートカット [#p2ecfdcf] -alt-e d d で現在行削除 -alt-i r で insert row -ctrl-yで繰り返し **QUERY [#ia666b3b] -QUERY内参照 "&A1&" --一旦クエリを切って、& 演算子で concat している。 --"&A1&"が文字列の場合には、QUREY文内部では'で囲う必要がある。'"&A1&"'とするとそこにクオーテーションなしで展開される --=QUERY('仕訳表'!$A$3:$Z, "select D, month(A)+1 where month(A)+1="&A3&"", true) --=QUERY($A:$H, "select sum(C) where F='"&$I$1&"'") **便利関数 [#l9fe5ff8] -=ADDRESS(ROW(), COLUMN(), 4) --現在のセルのアドレスが相対参照で得られる。F20みたいな(4は相対参照で、1とかだと固定がはいる) --なので、=SUBSTITUTE(ADDRESS(ROW(),COLUMN(),4),ROW(),"")でカラムのアルファベットが取れる。 -=INDEX(QUERY(A:A, "select count(*)"), 2, 1) --クエリ結果をワンラインで取得 --COUNT などのクエリの agg 関数と相性がいい -IMPORTRANGE --Importrange関数は、他のシートからデータを持ってくるときに使います。元のデータのあるシートが更新されると、Importrange関数で取得するデータも自動的に更新されるので、大変便利です。 **コメントアウト [#fe76ddd7] -数値の説明 --=IF(0,"手持ち現金",200000) --その値が何を表しているかが明確になる -クエリの説明 "&IF(0,"コメント","")" =QUERY(A:C," select B * C "&IF(0,"この行は売上 * 利益率を計算している","")&" ") **Join [#x3219435] --https://docs.google.com/spreadsheets/d/1MF-lPdlptcgmBz5wiyo4Hjg1rxZatm5P82lCj_7h87g/edit#gid=92922776 |