<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Excel中級者 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/excel%e4%b8%ad%e7%b4%9a%e8%80%85/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Sun, 12 Apr 2026 12:10:13 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>Excel中級者 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ExcelのBYCOL関数の使い方｜列ごとに関数適用</title>
		<link>https://mashukabu.com/excel-function-howto-use-bycol/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-bycol/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 12:10:13 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[BYCOL関数]]></category>
		<category><![CDATA[Excel中級者]]></category>
		<category><![CDATA[LAMBDA関数]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[スピル]]></category>
		<category><![CDATA[列集計]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5899</guid>

					<description><![CDATA[ExcelのBYCOL関数の使い方を実例で解説。列ごとにSUM・AVERAGE・MAXをまとめて求める方法、LAMBDA構文の書き方、#SPILL!エラーの対処、BYROW関数との違いまでカバー。Microsoft 365ユーザー必見。]]></description>
										<content:encoded><![CDATA[
<p>毎月の集計表で、列ごとにSUM関数をコピペしていませんか。列数が増えるたびに数式をコピーして、見た目は揃っていてもどこかで貼り間違いが発生する。そんな地味な作業に時間を奪われるのはもったいないですよね。</p>



<p>もし1つの数式で「この表の各列の合計をまとめて出して」と指示できたらどうでしょうか。実はExcelのMicrosoft 365には、そのためのBYCOL関数という専用関数が用意されています。列単位で一気に集計を返してくれる、スピル時代ならではの便利な関数です。</p>



<p>この記事では、ExcelのBYCOL関数の使い方を基本から応用まで解説します。LAMBDA関数との組み合わせ方、#SPILL!エラーへの対処、BYROW関数との違い、さらにGoogleスプレッドシート版との差分まで、実務で詰まりやすいポイントを重点的に紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">BYCOL関数とは？</a><ol><li><a href="#toc2" tabindex="0">Microsoft 365専用・スプレッドシート版との違い</a></li><li><a href="#toc3" tabindex="0">BYROW関数（行版）との対比</a></li></ol></li><li><a href="#toc4" tabindex="0">BYCOL関数の書き方</a><ol><li><a href="#toc5" tabindex="0">構文と引数</a></li><li><a href="#toc6" tabindex="0">LAMBDAを省略できない理由</a></li></ol></li><li><a href="#toc7" tabindex="0">基本の使い方</a><ol><li><a href="#toc8" tabindex="0">列ごとにSUMを求める</a></li><li><a href="#toc9" tabindex="0">列ごとにAVERAGE・MAXを求める</a></li></ol></li><li><a href="#toc10" tabindex="0">応用例</a><ol><li><a href="#toc11" tabindex="0">BYCOL × IFで条件付き列集計</a></li><li><a href="#toc12" tabindex="0">複合計算（SUM÷COUNTなど）をネストする</a></li></ol></li><li><a href="#toc13" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc14" tabindex="0">#SPILL!エラー｜隣のセルが空白か確認</a></li><li><a href="#toc15" tabindex="0">LAMBDA引数ミス｜引数の数が合わないとき</a></li><li><a href="#toc16" tabindex="0">バージョン非対応｜M365以外で使えない場合</a></li></ol></li><li><a href="#toc17" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">BYCOL関数とは？</span></h2>



<p>ExcelのBYCOL関数は、配列の「列ごと」にLAMBDA関数を適用し、1行にまとめた結果を返す関数です。読み方は「バイコル」。「BY COLumn（列ごとに）」という名前の通り、表を縦方向に分割して各列を1つずつ処理するイメージで使います。</p>



<p>従来のExcelで列ごとの集計を行う場合、SUMやAVERAGEを列の数だけ横にコピーするのが一般的でした。BYCOL関数を使えば、1つの数式で「すべての列に同じ処理」を適用できます。結果はスピル（自動的に隣のセルへ展開される機能）で横方向に並ぶため、数式の管理箇所が1つに集約され、修正や検算の手間が大きく減ります。</p>



<p>戻り値の形状は「1行×N列」の配列です。たとえば2行×3列の表を渡せば、結果は1行×3列の配列として返ります。元データの「列の数」がそのまま結果の「セルの数」になる、と覚えておくと迷いません。</p>



<h3 class="wp-block-heading"><span id="toc2">Microsoft 365専用・スプレッドシート版との違い</span></h3>



<p>BYCOL関数はMicrosoft 365時代の新世代関数で、対応バージョンは限定的です。利用できる環境は次のとおりです。</p>



<ul class="wp-block-list"><li>Excel for Microsoft 365 / Microsoft 365 for Mac</li><li>Excel for the web</li><li>Excel 2024 / Excel 2024 for Mac</li></ul>



<p>Excel 2019やExcel 2021では使えない点に注意してください。</p>



<p>GoogleスプレッドシートにもBYCOL関数は存在し、基本構文は <code>=BYCOL(配列または範囲, LAMBDA)</code> でExcel版とほぼ同じです。「Sheetsで使っていた数式をそのままExcelに持ってきたい」というケースでも、ほぼ書き換えなしで動くのが嬉しいポイントです。ただしスピルの干渉エラーの出方や、Excelテーブル内では動的配列関数が機能しないなど、Excel特有の注意点があります。</p>



<p>詳しいSheets版の書き方は、自サイトの<a href="https://mashukabu.com/spreadsheet-bycol-function/">スプレッドシートのBYCOL関数の使い方</a>も参考にしてください。両方の違いを押さえておくと、二重運用している環境でも迷わず使い分けられます。</p>



<h3 class="wp-block-heading"><span id="toc3">BYROW関数（行版）との対比</span></h3>



<p>BYCOL関数には「行版」とも言うべき兄弟関数、BYROW関数があります。BYROW関数は配列の「行ごと」にLAMBDAを適用し、「N行×1列」の配列を返します。「行はBYROW、列はBYCOL」と名前の頭文字で覚えると混乱しません。</p>



<figure class="wp-block-table"><table><thead><tr><th>観点</th><th>BYCOL関数</th><th>BYROW関数</th></tr></thead><tbody><tr><td>処理の向き</td><td>列ごと（縦のかたまりを処理）</td><td>行ごと（横のかたまりを処理）</td></tr><tr><td>戻り値の形</td><td>1行×N列</td><td>N行×1列</td></tr><tr><td>典型用途</td><td>列ごとの合計・平均・最大値</td><td>行ごとの合計・平均・最大値</td></tr><tr><td>スピル方向</td><td>横方向</td><td>縦方向</td></tr></tbody></table></figure>



<p>どちらもLAMBDA関数を使って「各列/各行にどんな処理を適用するか」を自由に指定できます。行ごとの集計が必要ならBYROW、列ごとの集計ならBYCOL、と目的に合わせて選び分けるだけです。</p>



<h2 class="wp-block-heading"><span id="toc4">BYCOL関数の書き方</span></h2>



<p>BYCOL関数は引数が2つだけのシンプルな構造ですが、第2引数にLAMBDAが必須という点だけは他の関数と毛色が違います。ここで構文を正確に押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc5">構文と引数</span></h3>



<p>BYCOL関数の基本構文は次のとおりです。</p>



<pre class="wp-block-code"><code>=BYCOL(array, lambda(column))</code></pre>



<p>引数の意味は下の表で整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須</th><th>役割</th></tr></thead><tbody><tr><td><code>array</code></td><td>必須</td><td>処理したい配列またはセル範囲。A1:C10のような長方形の範囲を渡す</td></tr><tr><td><code>lambda(column)</code></td><td>必須</td><td>各列に適用するLAMBDA関数。<code>column</code>は1列分のデータを表す仮引数</td></tr></tbody></table></figure>



<p><code>array</code> には通常のセル範囲だけでなく、他の関数が返す配列もそのまま渡せます。<code>lambda(column)</code> の <code>column</code> という名前は自分で好きな名前に変えても構いません。たとえば <code>LAMBDA(col, SUM(col))</code> のように短い名前を使うと、数式が読みやすくなります。</p>



<h3 class="wp-block-heading"><span id="toc6">LAMBDAを省略できない理由</span></h3>



<p>「SUMだけを使いたいのだから、LAMBDAは省略したい」と思うかもしれません。しかしBYCOL関数では、第2引数のLAMBDAは省略できません。理由は、BYCOL関数自体が「何の処理をするか」を知らない汎用関数だからです。</p>



<p>BYCOL関数は「各列を順番にLAMBDAへ渡す」という役割しか持ちません。列ごとに何を計算するかはLAMBDAの中で決める必要があります。次の2つを見比べると違いが明確です。</p>



<pre class="wp-block-code"><code>=BYCOL(A1:C10, SUM)</code></pre>



<p>上の書き方はNGです。SUMをLAMBDAで包まずに渡しているためエラーになります。正しくは次のように書きます。</p>



<pre class="wp-block-code"><code>=BYCOL(A1:C10, LAMBDA(col, SUM(col)))</code></pre>



<p><code>LAMBDA(仮引数, 計算式)</code> の形で必ず包んであげてください。</p>



<h2 class="wp-block-heading"><span id="toc7">基本の使い方</span></h2>



<p>ここからはBYCOL関数を使った基本的な集計パターンを紹介します。どれも実務の集計表で頻出するものばかりです。</p>



<h3 class="wp-block-heading"><span id="toc8">列ごとにSUMを求める</span></h3>



<p>まずは定番の「列ごとの合計」から。A1:C5に店舗別の売上が入っていて、各列（＝各店舗）の合計を一発で出したい場合の数式は次のとおりです。</p>



<pre class="wp-block-code"><code>=BYCOL(A1:C5, LAMBDA(col, SUM(col)))</code></pre>



<p>この数式をE1に入力すると、E1:G1の3セルに各列の合計がスピルで展開されます。列数が10や20に増えても、範囲を <code>A1:T5</code> のように広げるだけでOKです。SUM関数をコピペする必要はありません。</p>



<p>Microsoft公式ドキュメントでは、各列の最大値を求める <code>=BYCOL(A1:C2, LAMBDA(array, MAX(array)))</code> が使用例として紹介されています。LAMBDAの仮引数名は <code>array</code> でも <code>col</code> でも動作は同じです。</p>



<h3 class="wp-block-heading"><span id="toc9">列ごとにAVERAGE・MAXを求める</span></h3>



<p>SUM以外の集計関数も同じ要領です。AVERAGEで平均、MAXで最大値、MINで最小値がそれぞれ1つの数式で取れます。</p>



<pre class="wp-block-code"><code>=BYCOL(A1:C5, LAMBDA(col, AVERAGE(col)))</code></pre>



<pre class="wp-block-code"><code>=BYCOL(A1:C5, LAMBDA(col, MAX(col)))</code></pre>



<pre class="wp-block-code"><code>=BYCOL(A1:C5, LAMBDA(col, MIN(col)))</code></pre>



<p>これらを縦に並べて書けば、1つのセル範囲に「合計・平均・最大」を整然と出せます。従来なら関数を手で入力していた作業が、数式の使い回しで済むようになるのが最大のメリットです。</p>



<h2 class="wp-block-heading"><span id="toc10">応用例</span></h2>



<p>基本の使い方を押さえたら、実務でよく出てくる応用パターンにも挑戦してみましょう。BYCOL関数はLAMBDAの中身を自由に書けるため、組み合わせ次第で表現力がぐっと広がります。</p>



<h3 class="wp-block-heading"><span id="toc11">BYCOL × IFで条件付き列集計</span></h3>



<p>「各列のうち、100以上の値だけを合計したい」といった条件付き集計もBYCOL関数で実現できます。LAMBDAの中にIF関数を仕込み、条件を満たす要素だけをSUMに渡す形です。</p>



<pre class="wp-block-code"><code>=BYCOL(A1:C10, LAMBDA(col, SUM(IF(col&gt;=100, col, 0))))</code></pre>



<p>この数式は各列について「100以上ならその値、未満なら0」を返し、その合計を取ります。SUMIF関数は範囲と条件を直接指定する使い方が主流ですが、BYCOL内ではLAMBDAの仮引数を条件判定に使えるため、より柔軟な集計が組めます。</p>



<p>同じ考え方で、COUNTIFのように「条件に合う件数」を列ごとに数えることもできます。</p>



<pre class="wp-block-code"><code>=BYCOL(A1:C10, LAMBDA(col, SUM(--(col&gt;=100))))</code></pre>



<p><code>--(col>=100)</code> は、TRUE/FALSEを1/0に変換する定番テクニックです。BYCOLと組み合わせると、列ごとの条件一致件数がスピルで一気に並びます。</p>



<h3 class="wp-block-heading"><span id="toc12">複合計算（SUM÷COUNTなど）をネストする</span></h3>



<p>LAMBDAの中では複数の関数をネストして自由に計算できます。たとえば「各列の平均を自前で計算したい」ときは、SUMとCOUNTを組み合わせる書き方が可能です。</p>



<pre class="wp-block-code"><code>=BYCOL(A1:C10, LAMBDA(col, SUM(col)/COUNT(col)))</code></pre>



<p>単純な平均ならAVERAGEで十分ですが、分母と分子に別々の条件を絡めたいときに威力を発揮します。公式ドキュメントでは <code>=BYCOL(A1:C2, LAMBDA(array, SUMSQ(array)))</code> のように二乗和を求める例も紹介されています。通常の数式で書ける計算ならほぼ何でも詰め込める、と考えてOKです。</p>



<p>より複雑な式では、LET関数で中間変数を定義すると可読性が上がります。詳しくは<a href="https://mashukabu.com/excel-function-howto-use-let/">ExcelのLET関数の使い方</a>もあわせて参照してみてください。</p>



<h2 class="wp-block-heading"><span id="toc13">よくあるエラーと対処法</span></h2>



<p>BYCOL関数は新しい関数のため、初めて触るときに独特のエラーに遭遇することがあります。公式ドキュメントに記載されている代表的なエラーと対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc14">#SPILL!エラー｜隣のセルが空白か確認</span></h3>



<p>BYCOL関数の結果は横方向にスピルするため、結果が展開される領域が他のデータで埋まっていると <code>#SPILL!</code> エラーが発生します。Microsoft公式によれば、主な原因は次の3つです。</p>



<ul class="wp-block-list"><li>スピル範囲に既存データが残っている</li><li>スピル範囲に結合セルが含まれている</li><li>Excelテーブル内で動的配列関数を使っている（テーブル内ではスピルが機能しない）</li></ul>



<p>対処はシンプルで、スピル先のセルを空にすればOKです。エラーセルの横に表示される警告アイコンをクリックし、「妨害しているセルを選択」ボタンを押すと、原因となっているセルがハイライトされます。その位置のデータを退避するか、数式の入力位置を別の場所に変えましょう。</p>



<p>Excelテーブル内で使いたい場合は、一度テーブル外のセルに数式を書き、結果だけをテーブルに値貼り付けする運用がおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc15">LAMBDA引数ミス｜引数の数が合わないとき</span></h3>



<p><code>#VALUE!</code> エラーや <code>#CALC!</code> エラーが出たときは、LAMBDA関数の書き方を見直します。公式ドキュメントでは次のように区別されています。</p>



<ul class="wp-block-list"><li><code>#VALUE!</code>：無効なLAMBDA関数、またはLAMBDAのパラメータ数が正しくない（Incorrect Parameters）</li><li><code>#CALC!</code>：LAMBDA関数が提供されていない、またはLAMBDAが単一値以外を返している</li></ul>



<p>典型的なミスは、LAMBDAの仮引数を増やしすぎるパターンです。BYCOL関数のLAMBDAは仮引数1つだけを受け取ります。<code>LAMBDA(col, row, SUM(col))</code> のように引数を2つ書くと <code>#VALUE!</code> になります。</p>



<p>また <code>#CALC!</code> は、LAMBDAの中身が配列をそのまま返してしまった場合に出ます。SUMやAVERAGEのような集約関数で「1つの値」に畳み込む処理を必ず最後に置いてください。</p>



<h3 class="wp-block-heading"><span id="toc16">バージョン非対応｜M365以外で使えない場合</span></h3>



<p>Excel 2019やExcel 2021でBYCOL関数を使おうとすると、関数名が認識されず <code>#NAME?</code> エラーになります。BYCOL関数はMicrosoft 365系とExcel 2024系でのみ使える新しい関数だからです。</p>



<p>バージョンが原因かどうかは、「ファイル」→「アカウント」画面で確認できます。製品名が「Microsoft 365」や「Excel 2024」になっていれば対応済みです。「Excel 2021」「Excel 2019」と表示される場合は、そのPC環境ではBYCOL関数自体が存在しません。</p>



<p>対応バージョンのPCで数式を書き、値貼り付けで共有するか、SUMを列ごとに並べる従来の書き方にフォールバックする必要があります。Microsoft 365にアップグレードできるならそれが最速の解決策です。</p>



<h2 class="wp-block-heading"><span id="toc17">まとめ</span></h2>



<p>ExcelのBYCOL関数は、列ごとの集計を1つの数式にまとめてくれる頼もしい関数です。SUM・AVERAGE・MAXなどの定番集計はもちろん、IFと組み合わせた条件付き集計や、SUM/COUNTを組み合わせたカスタム計算もLAMBDA内で自由に書けます。</p>



<p>ポイントを改めて整理すると次のとおりです。</p>



<ul class="wp-block-list"><li>構文は <code>=BYCOL(array, lambda(column))</code> で、LAMBDAは省略不可</li><li>戻り値は「1行×N列」の配列（列数がそのまま結果のセル数になる）</li><li>Microsoft 365・Excel 2024系でのみ動作。Excel 2021以前は <code>#NAME?</code> エラー</li><li><code>#SPILL!</code> エラーはスピル先の空き・結合セル・テーブル内使用を疑う</li><li>行ごとの集計が必要ならBYROW関数、列ごとならBYCOL関数で使い分ける</li></ul>



<p>LAMBDA関数の書き方に不安があるなら、先に<a href="https://mashukabu.com/excel-function-howto-use-lambda/">ExcelのLAMBDA関数の使い方</a>で基本構文を押さえておくとBYCOLの理解が一気に進みます。コピペ集計から卒業して、スピル時代のスマートな集計術を自分の武器にしていきましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-bycol/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
