エクセル入門BYROW関数(配列の行単位にLAMBDAを適用し列を集約)
BYROW関数はLAMBDAヘルパー関数(LAMBDAと一緒に使う)の一つです。配列の各行ごとにLAMBDAを適用して、行単位での計算結果を元配列と同じ行数(列数は1)の配列で返します。行単位ではなく列単位で処理して行を集約する場合はBYCOL関数を使います。
・LAMBDA関数の構文 ・LAMBDA関数をセルで使う場合の基本 ・LAMBDA関数の「数式の検証」について ・LAMBDA関数をセルで使う場合の使用例 ・パラメーターの省略について ・LAMBDA関数を名前定義に登録 ・再帰関数の作成 ・LET関数内でLAMBDA関数を使用する ・LAMBDA関数にLAMBDA関数を渡す ・LAMBDA関数のネストと変数のスコープ(適用範囲) ・遅延評価によりLAMBDA関数オブジェクト(関数値)を返すことができる関数 ・LAMBDAヘルパー関数について
MAP関数とSCAN関数とREDUCE関数の使い分け- MAP関数は、入力リストと出力リストの行数が変わらないときに使います。各要素の処理が独立しており、他の要素に影響されない場合に最適です。
- SCAN関数は、入力と出力の行数が変わらず、かつ各要素の処理が前の要素の結果に依存するときに使います。処理の途中経過をすべて記録したい場合に役立ちます。
- REDUCE関数は、入力リストと出力リストの行数が変わるときに使います。リスト全体を1つの値に集約したり、条件に基づいて新しいリストを生成したりする際に用います。
- BYROW関数は、配列の各行に同じ処理を適用し、行ごとに結果を返すときに使います。行単位での集計や変換に最適です。
- BYCOL関数は、配列の各列に同じ処理を適用し、列ごとに結果を返すときに使います。列単位での集計や変換に最適です。
BYROWは「入力配列と同じ行数×1列」の 出力配列 を最初に用意すると考えてください。 A1:C5を行単位で順に処理します。 A1:A5の A1:C5 の各行が順にLAMBDAの x に入ります。 最初は A1:C1 が取り出され、LAMBDAはパラメーター x で受け取りSUM( A1:C1 )を計算し、結果は取り出した配列と同じ行位置(1行)の出力配列に格納されます。 次に A2:C2 が取り出され、LAMBDAはパラメーター x で受け取りSUM( A2:C2 )を計算し、結果は取り出した配列と同じ行位置(2行)の出力配列に格納されます。 これが配列の最後の行まで行われ、配列の全ての処理が終わった時の出力配列がBYROWの戻り値となります。
SUM関数ではなくTEXTJOIN関数を使った場合は、以下のような結果になります。 BYCOL関数と似たような問題にしています。 ・MAP関数とSCAN関数とREDUCE関数の使い分け ・BYCOL関数の構文 ・BYCOLの基本動作 ・BYCOL関数の使用例と解説 BYCOLとの動作の違いを把握してください。 BYROW関数の使用例と解説 例題個人別の5教科(英語、国語、数学、理科、社会)の点数一覧があります。 90点以上の科目があり、かつ、全教科が50点以上の人だけを一覧出力してください。 ※未受験科目は0点として入力してあるものとします。
数式 =FILTER(A2:F12,BYROW(B2:F12,LAMBDA(x,AND(MAX(x)>=90,MIN(x)>=50)))) 上記数式のセル範囲は列全体を指定しても動作します。 ただし、どうしても若干パフォーマンスは落ちます。 解説 FILTER関数の詳細については以下を参照してください。 FILTER関数(範囲をフィルター処理)・FILTER関数の書式 ・FILTER関数使用例のサンプルデータ ・FILTER関数の基本 ・空白セルを0ではなく空白にする場合 ・複数条件のフィルター ・関数を使ってフィルター ・横(列)でフィルター ・表示する列を選択する ・FILTER関数の結果を他の関数で使う ・スピルによって新しく追加された関数
BYROWは、B2:F12の範囲に対して上から順に行単位で処理をしていきます。 B2:F2に対して、最大値>=90 AND 最小値 B3:F3以降も同様に計算していきます。BYROWの結果は「入力配列と同じ行数×1列」の配列です。 この例題のBYROWは「11行×1列」の「TRUE/FALSE」値の配列を返します。 この配列をFILTER関数の第2引数「含む」に指定することで行の絞り込みを行っています。
LAMBDA以降の新関数の問題集 ・・・ 解答は別ページになっています。・目次 ・LAMBDA踊るぞ編 ・LAMBDA踊るぞ編2 ・SCAN編 ・MAP編 ・REDUCE編 ・山手線営業の旅編 ・BYROW,BYCOL編 ・ここからはフリー問題だよ編 ・好きな関数を使ってくれ編 ・いろんな関数を使ってね編 ・魔球編 ・豚が木に登れば落ちることもある編 ・たまには100点とってみたいものだ編 ・これは何と言う処理なんだろ編 ・数字は嫌いなのだ編 ・外堀から埋めていくぞ編 ・なぜわざわざそうしたいのか編 ・かっこつけてんじゃないよ編 ・頭の体操だけど新関数の出番はあるか?編 ・定番だけど出してなかったよね編
LAMBDA以降の新関数の使用例・2つの1次元配列から、それをクロス結合した結果を返す ・A列が同じ行のB列の値を連結して、A列の一意な値とともに出力 ・名前定義を使わずにLAMBDA関数で再帰する方法 ・文字列を大文字小文字変換して大小文字の全組み合わせを出力 ・2つのテーブルの片方しかない行を縦に連結出力 ・3連単、3連複のフォーメーション買目を全て列挙する ・FILTER関数の出力行数・列数を指定する ・月が縦で日が横の表を、曜日(7列)で縦に折り返す ・文字列内の括弧()()の中の文字を取り出して列挙 ・表内にあるセル内改行を複数行に展開 ・文字列の中から1文字削除の全パターン出力 ・クロスABC分析 ・月利が毎月変動する月複利の計算 ・レーベンシュタイン距離 ・文字列を数字と数字以外で分割 ・縦横スピルしないXLOOKUP代替(MATCH+INDEX,FILTER,CHOOSEROWS) ・直積(クロス結合、…
同じテーマ「エクセル入門」の記事 新着記事 NEW ・・・新着記事一覧を見る アクセスランキング ・・・ ランキング一覧を見る このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。 掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。 本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。 This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.