メインコンテンツへスキップ
見出し画像

🧩 スプレッドシートでBYROW関数を使いこなす〜「行ごとに考える」中級者のための新しい書き方〜

    スプレッドシートを中級レベルで使っていると、
    ARRAYFORMULAで自動化した結果、

    • シートが重くなった

    • 数式が読めなくなった

    • 修正が怖い

    という壁にぶつかることがあります。

    そんなときに選択肢として出てくるのが BYROW関数 です。
    BYROWは「配列を行単位で処理する」ための関数で、
    重さ・可読性・設計 のバランスを取りやすいのが特徴です。

    この記事では、
    BYROWとは何か/なぜ軽く感じるのか/どんな場面で使うべきか
    を実務目線で整理します。

    📌 BYROW関数とは?

    BYROWは、指定した範囲を 1行ずつ処理 し、
    その結果を縦に返す関数です。

    基本構文はこちらです。

    =BYROW(範囲, LAMBDA(行の値, 処理))
    

    ポイントは LAMBDA。
    「この1行に対して、どう処理するか」を書きます。

    👉 ARRAYFORMULAが「列全体を見る」のに対して、
    👉 BYROWは「1行ずつ考える」関数です。

    📄 サンプルデータ

    まずは、以下を A1:C7 に貼り付けてください。

    日付	商品名	売上金額
    2025-01-05	Tシャツ	2800
    2025-01-08	パンツ	5200
    2025-01-10	ニット	9800
    2025-01-15	バッグ	12500
    2025-01-18	帽子	1800
    2025-01-22	パンツ	4600
    
    画像

    この「売上金額」に応じてランクを付ける例で考えます。

    🔄 ARRAYFORMULAでよくある書き方

    まずは、よくあるARRAYFORMULAの例です。

    =ARRAYFORMULA(
     IF(C2:C="","",
      IF(C2:C>=10000,"A",
       IF(C2:C>=5000,"B","C")
      )
     )
    )
    
    画像

    動きますが、実務では次の問題が出やすくなります。

    • C列の空白行すべてを常に監視

    • 行数が増えるほど再計算が重くなる

    • ロジックが詰まりやすい

    🧠 BYROWで同じ処理を書いてみる

    同じランク判定をBYROWで書くと、こうなります。

    =BYROW(
     C2:C,
     LAMBDA(x,
      IF(x="","",
       IF(x>=10000,"A",
        IF(x>=5000,"B","C")
       )
      )
     )
    )
    
    画像

    一見少し難しそうですが、
    xは仮の値(変数)を入れるところ。
    つまりx = その行の売上金額 と考えるとシンプルです。

    📌 BYROWが「軽く感じる」理由

    BYROWが実務で好まれる理由は、次の点にあります。

    ① 行単位で処理が完結する

    ARRAYFORMULAは「列全体」を前提にしますが、
    BYROWは 1行ずつ評価 します。

    👉 無駄な再計算が起きにくい構造です。

    ② 複雑な条件と相性がいい

    IF、REGEXMATCH、複数条件などを組み合わせても、
    「1行の話」として読めます。

    👉 数式の意味が追いやすくなります。

    ③ 補助列の代替になる

    本来なら

    • 判定用列

    • フラグ列

    • 表示列

    と分けていた処理を、
    行単位のロジックとしてまとめられる のがBYROWの強みです。

    🧩 複数列を使ったBYROWの例

    BYROWは、1列だけでなく 複数列をまとめて処理 できます。

    例:
    「売上金額が5000以上 かつ 商品名がパンツならOK」

    =BYROW(
     A2:C,
     LAMBDA(r,
      IF(
       AND(INDEX(r,3)>=5000, INDEX(r,2)="パンツ"),
       "OK",
       ""
      )
     )
    )
    
    画像

    ここでの考え方は、

    • r = その行(A~C列のセット)

    • INDEX(r,列番号) で値を取り出す

    👉 「1行を1つのオブジェクトとして扱う」感覚です。

    ⚠️ BYROWを使うときの注意点

    便利ですが、万能ではありません。

    • 単純な列変換だけならARRAYFORMULAの方が楽

    • LAMBDAに慣れていないと最初は読みにくい

    • 全列指定(A2:Cなど)は必要最低限にする

    👉 重さ・複雑さを感じたときの選択肢
    として使うのがちょうど良いです。

    🧠 使い分けの判断基準

    迷ったら、この基準で考えます。

    • 単純な処理・全列一括 → ARRAYFORMULA

    • 条件が多い・行単位判断 → BYROW

    「ARRAYFORMULAで重い/読めない」と感じたら、
    BYROWに切り替えるだけで改善するケースは多いです。

    📝 今回のまとめ

    BYROWは、
    スプレッドシートを 行単位で考えるための関数 です。

    覚えておきたいポイントはこの3つ。

    • BYROWは1行ずつ処理する

    • 複雑な条件ほど真価を発揮する

    • ARRAYFORMULAの代替として使える

    自動化は「全部一気に」より、
    無理なく・軽く・読める形 が正解。

    BYROWは、そのための
    中級者にとって非常に心強い選択肢です 🧩✨

     
     
    スプレッドシート自動化・GAS活用が得意な「ひろ」です。 副業や物販の業務効率化をサポートしています。 時短ノウハウや便利なコードを発信していきます。

    あなたへのおすすめ