Microsoft 365版のExcel(以下、Excel 365)は、買い切り型のExcel 2024(永続ライセンス版)のリリース後も、進化を止めることなく新しい関数が次々と追加されています。これらの新機能は、基本的にExcel 365のサブスクリプションユーザーのみが利用可能であり、Excel 2024ユーザーは使用できません。本記事では、Excel 2024のリリース以降にExcel 365へ仲間入りした注目の新関数をピックアップし、それぞれの関数の使い方、引数の詳細な解説、そして実際に使ってみたユーザーの声(ユーザー評価や使用例、意見など)を交えながら、その魅力と実用性を紹介します(2025年5月現在)。
Excel 365に追加された新関数 概要(Excel 2024未搭載)
Excel 2024のリリース後にExcel 365へ追加された主な新関数は以下の通りです。これらの関数は、データ集計、テキスト操作、外部サービス連携など、多岐にわたる機能を提供します。
- GROUPBY関数: 指定した「行分類キー」に基づいてデータをグループ化し、集計を行う関数です。ピボットテーブルのような集計結果を、数式だけで動的に生成できます。
- PIVOTBY関数: 行方向と列方向の2次元でデータをグループ化し、集計する関数です。複数軸でのピボット集計(ピボットテーブルに相当するようなクロス集計)を数式で実現します。
- PERCENTOF関数: 部分集合の合計を全体の合計で割った比率(割合)を計算する関数です。単体でも使用できますが、GROUPBY関数やPIVOTBY関数と組み合わせて、集計結果をパーセンテージで表示する際に特に便利です。
- PY関数: Excelのセル内に直接Pythonコードを記述して実行し、その結果をExcelのセル値やオブジェクトとして取得できる画期的な関数です。ExcelからPythonの強力なデータ分析ライブラリ(Pandas、Matplotlibなど)を利用するための橋渡しとなります。
- REGEXTEST関数: テキストが正規表現(Regex)パターンに一致するかどうかを判定する関数です。特定の文字パターンが含まれているかをTRUEまたはFALSEで返します。
- REGEXEXTRACT関数: 正規表現パターンに一致したテキスト部分を抽出する関数です。最初の一致箇所、全ての一致箇所、または正規表現のキャプチャグループごとに抽出することが可能です。
- REGEXREPLACE関数: 正規表現パターンに一致したテキスト部分を別の文字列で置換する関数です。特定の一致箇所のみを置換することもできます。
- TRANSLATE関数: Microsoft翻訳サービスを利用して、指定したテキストをある言語から別の言語に翻訳する関数です。100以上の言語に対応し、自動言語検出機能も備えています。
- DETECTLANGUAGE関数: 指定したテキストの言語を検出し、その言語コード(例: “en”、”ja”)を返す関数です。翻訳処理の前段階でテキストの言語を特定する際などに役立ちます。
- TRIMRANGE関数: 指定したセル範囲や配列の周囲にある空白の行や列を取り除き、データが存在する部分だけを抽出する関数です。動的配列でスピルした結果から不要な空白を除去したり、動的な最終行参照を簡潔に記述したりするのに有用です。
それでは、これらの新関数について、それぞれの使い方、引数の詳細、そしてユーザー評価や具体的な使用例を詳しく見ていきましょう。
各新関数の詳細解説
GROUPBY関数
概要:
GROUPBY関数は、指定した一つまたは複数のキー列に基づいてデータの行をグループ化し、それに対して集計処理(合計、平均、個数など)を行うための動的配列関数です。 1 15 これにより、従来ピボットテーブルで行っていたようなカテゴリ別の集計結果(例えば、年度別の売上合計や、担当者別の平均契約額など)を、単一の数式で直接シート上に生成することができます。Excel 365の強力な動的配列機能とラムダ関数(またはその簡易版であるETA Lambda)の概念を活用しており、複数レベルでのグループ化や、複数の異なる種類の集計を同時に行うことも可能です。
構文と使用例:
=GROUPBY(row_fields, values, function, [field_headers], [total_depth], [sort_order], [filter_array], [field_relationship])
- row_fields
- グループ化の基準となる列(または複数列の配列)を指定します。この列の値に基づいてデータがまとめられます。 16
- values
- 集計対象となる数値データが含まれる列(または複数列の配列)を指定します。 17
- function
- 適用する集計関数を指定します。
SUM
,AVERAGE
,COUNT
,MAX
,MIN
といった組み込みの集計関数名を直接指定できます(これらはETA Lambdaまたは縮小ラムダと呼ばれます)。 18 19 より複雑な集計を行いたい場合は、独自のLAMBDA関数を定義して渡すことも可能です。複数の集計を同時に行いたい場合は、{SUM,AVERAGE}
のように配列形式で指定します。 20 - [field_headers] (オプション)
- 入力範囲 (row_fields, values) にヘッダー行が含まれるか、また、結果の配列にヘッダー行を含めるかを数値 (0~3) で指定します。 21 省略時や3以外の値の場合、Excelがデータの内容からヘッダーの有無を自動的に推定しようとします。 22
- 0: ヘッダーなし (入力データにヘッダー行がないとみなします)
- 1: 入力にヘッダーあり、結果にヘッダー表示なし
- 2: 入力にヘッダーなし、結果に自動生成したフィールド名をヘッダーとして表示
- 3: 入力にヘッダーあり、結果にもそのヘッダーを表示
- [total_depth] (オプション)
- グループ集計における総計行や小計行の表示方法を指定します。 23
- 0: 総計・小計なし
- 1: 総計のみ表示
- 2: 総計と各グループの小計を表示 (デフォルトに近い動作)
- -1: 総計を最上部に表示
- -2: 総計と小計を最上部に表示
複数列でグループ化している場合、2より大きい数値を指定することで、より下位の分類ごとの小計も表示可能です。 24
- [sort_order] (オプション)
- 結果の行グループの並べ替え順序を指定します。 25 並べ替えの基準となる列を、
row_fields
で指定した列の順序、次にvalues
で指定した集計結果の列の順序に対応する列番号で指定します。正の数で昇順、負の数で降順を意味します。 25 複数のキーで並べ替えたい場合は、{1,-2}
のように配列で指定します。省略した場合は、通常、入力データの出現順が維持されます。 - [filter_array] (オプション)
- グループ化や集計の対象に含める行をフィルタリングするための条件配列 (TRUE/FALSEの配列) を指定します。 26 この配列の長さは、
row_fields
(元データ) の行数と一致している必要があります。 27 例えば、特定の製品カテゴリや期間のデータのみを集計対象としたい場合に、その条件に合致する行をTRUE、それ以外をFALSEとした配列を渡すことで実現できます。 - [field_relationship] (オプション)
row_fields
に複数列を指定した場合の、それらのフィールド間の関係性を指定します。 28 0または省略で「階層型 (Hierarchy)」、1で「テーブル型 (Table)」となります。階層型では、上位のグループの並び順に応じて下位のグループも並べ替えられ、小計も階層的に計算されます。 29 テーブル型では、各グループ化列が独立したフィールドとして扱われ、それぞれ個別にソートされるイメージです。
使用例:
例えば、SalesData
という名前のテーブルに「Year」(年)列と「Sales」(売上額)列があるとします。このデータから、年ごとの売上合計を集計する場合、GROUPBY関数を使って以下のように記述できます。
=GROUPBY(SalesData[Year], SalesData[Sales], SUM)
この数式は、SalesData[Year]
列の値に基づいて売上データをグループ化し、それぞれのグループ(年)ごとにSalesData[Sales]
列の合計(SUM
)を計算します。結果は動的配列としてスピル表示され、通常は「年」と「売上合計」の2列からなる集計表が生成されます。SUM
の部分は、AVERAGE
(平均)、COUNT
(個数)、MAX
(最大値)、MIN
(最小値)など、他の集計関数を指定することも可能です。さらに、{SUM, AVERAGE}
のように複数の関数を配列として渡すことで、それぞれの集計結果を同時に出力することもできます。 30
ユーザー評価・感想:
GROUPBY関数は、これまでピボットテーブルの独擅場だった高度な集計処理を、数式ベースで手軽に実現できるようになった点が高く評価されています。Excelユーザーコミュニティでは、「ピボットテーブルほど直感的ではないかもしれないが、SQLのようなデータ集計に慣れているユーザーや、数式で完結させたい場合には非常に有用だ」といった声が見られます。具体的には、「ピボットテーブルはマウス操作で直感的に集計項目を変更したり、ドリルダウン(詳細データの表示)ができたりする利便性がある一方で、GROUPBY関数や後述するPIVOTBY関数は、必要な集計ロジックをプログラム的に正確かつ柔軟に定義できる大きなメリットがある」という比較分析がなされています。
複数のフィルター条件や複雑な計算処理を組み込んだ動的なレポートを作成するのに適している反面、書式設定(フォント、色、罫線など)の自由度や、インタラクティブな操作性(例えば、集計結果の行や列をマウスで折りたたんだり展開したりする機能)においては、依然としてピボットテーブルに軍配が上がるとの意見も見受けられます。実際、「リアルタイムに結果が更新されるのは素晴らしいが、レポートとしての見栄えを整える機能がもっと欲しい」といったコメントや、「ピボットテーブルのように階層構造をインタラクティブに操作するのが、関数ベースでは難しい」という指摘もあります。
総じて、GROUPBY関数はピボットテーブルを完全に置き換えるものではなく、それぞれの特性を理解し、目的に応じて使い分けるべき機能であるとの評価が多いようです。「両者にはそれぞれの得意分野があり、互いに補完し合う関係だ」という意見が示すように、手軽さやインタラクティブ性を重視するならピボットテーブル、数式による柔軟性や自動化を重視するならGROUPBY関数、といった使い分けがユーザーの間で認識されつつあります。
PIVOTBY関数
概要:
PIVOTBY関数は、GROUPBY関数をさらに拡張し、行方向だけでなく列方向にもデータをグループ化して集計表(クロス集計表)を作成することができる関数です。 36 ピボットテーブルにおける「行ラベル」「列ラベル」「値」の概念に相当する機能を数式で実現し、2次元のクロス集計を動的配列として生成します。複数の行見出し階層や列見出し階層もサポートしており、従来はピボットテーブルや、より高度なツールであるPower Pivot(DAX式)でしか実現できなかったような複雑な集計クロステーブルを、単一のワークシート関数で作成できる点が大きな特徴です。
構文と使用例:
=PIVOTBY(row_fields, col_fields, values, function, [field_headers], [row_total_depth], [row_sort_order], [col_total_depth], [col_sort_order], [filter_array], [relative_to])
- row_fields
- 行方向のグループ化のキーとなる列(または複数列の配列)を指定します。結果の表では行見出し項目となります。 37 複数列を指定した場合は、行グループが多重の階層構造を形成します。
- col_fields
- 列方向のグループ化のキーとなる列(または複数列の配列)を指定します。結果の表では列見出し項目となります。 38 複数列を指定した場合は、列グループが階層構造を形成します。
- values
- 集計対象となる数値データが含まれる列(または複数列の配列)を指定します。 39 複数列を指定した場合、出力される表には複数の集計値の列が含まれることになります。
- function
- 集計に使用するラムダ関数、またはETA Lambda(
SUM
,AVERAGE
などの組み込み集計関数名)を指定します。 40 GROUPBY関数と同様に、配列形式で複数の関数を渡すことで、複数の集計を同時に実行できます。 - [field_headers] (オプション)
row_fields
,col_fields
,values
の各範囲にヘッダー行が含まれているか、また、結果の表にフィールド名(ヘッダー)を表示するかを数値 (0~3) で指定します。意味合いはGROUPBY関数のfield_headers
引数と同様です。 41- [row_total_depth] (オプション)
- 行グループにおける総計や小計の表示方法を指定します。GROUPBY関数の
total_depth
引数と同様の考え方ですが、こちらは行方向の集計にのみ適用されます。 42 例えば、2を指定すると、各行グループごとの小計行と、全体の総計行が表示されます。負の値を指定することで、総計行を上部に配置することも可能です。 43 - [row_sort_order] (オプション)
- 行グループの並べ替え順序を指定します。 44 GROUPBY関数の
sort_order
引数と同様に、並べ替えの基準となる列を、row_fields
内の列の順序、次にvalues
で指定した集計結果の列の順序で通し番号を付け、その番号を正の値(昇順)または負の値(降順)で指定します。 - [col_total_depth] (オプション)
- 列グループにおける総計や小計の表示方法を、0から2の数値または負の数値で指定します。 45 例えば、1を指定すると列の総計列を表示し、2を指定すると総計列と小計列の両方を表示します。-1や-2を指定すると、列の総計を左端に配置するなどの制御が可能です。複数列でグループ化している場合に特に有効です。 46
- [col_sort_order] (オプション)
- 列グループの並べ替え順序を指定します。 47
col_fields
およびvalues
に対応する列番号を指定し、正の値(昇順)または負の値(降順)で並べ替え方法を指定します。この指定により、結果として出力される表の列の並び順が変更されます。 - [filter_array] (オプション)
- GROUPBY関数と同様に、TRUE/FALSEの論理値配列を用いて、集計対象に含める行をフィルタリングします。 48 このフィルターは、行フィールドと列フィールドの両方にまたがる元データの各行に対して適用されるため、配列の長さは元データの行数と一致させる必要があります。 48
- [relative_to] (オプション)
function
引数に2つの引数を取る集計関数(例えばPERCENTOF
関数)を使用する場合に、その第二引数として何(どの範囲の合計)を与えるかを指定します。 49 これは特に、集計結果を割合(パーセンテージ)で表示したい場合に重要となり、割合計算の母数を「行の合計」「列の合計」「全体の合計」などから選択することができます。 50 指定可能な値は以下の通りです。- 0: 列合計に対する割合 (デフォルト) 51
- 1: 行合計に対する割合
- 2: 全体合計(グランドトータル)に対する割合
- 3: 親列の合計に対する割合(列が階層構造になっている場合、直上のグループの合計)
- 4: 親行の合計に対する割合(行が階層構造になっている場合、直上のグループの合計)
この
relative_to
引数は、function
引数にPERCENTOF
のような2つの引数を必要とする組み込み関数を指定した場合、またはユーザーが作成したLAMBDA関数が2つの引数(部分集合と全体集合など)を取るように設計されている場合にのみ効果を持ちます。 49 52
使用例:
例えば、あるデータ範囲(テーブル名: tbl
)に「Product」(製品)、「Year」(年)、「Sales」(売上)という列が含まれているとします。このデータから、「製品別」かつ「年別」のクロス集計表として、それぞれの売上合計を算出するには、以下のように記述できます。
=PIVOTBY(tbl[Product], tbl[Year], tbl[Sales], SUM)
この数式は、行方向には製品別、列方向には年別で、それぞれのSales
(売上)の合計を集計します。 53 結果は、「製品を行見出し、年度を列見出しとするマトリクス(表)」が動的配列としてシート上に出力されます。もし、例えば5年分の年次データが列として生成され、その右側に全体の総計列を追加したい場合は、col_total_depth
引数に1を指定することで、列方向の総計を追加できます。
=PIVOTBY(tbl[Product], tbl[Year], tbl[Sales], SUM, , , , 1)
さらに、売上を降順でソートしたい場合は、row_sort_order
やcol_sort_order
引数を利用します。例えば、全体の売上合計に基づいて製品(行)を降順に並べ替えたい場合、row_sort_order
に負の値を指定します。この際、ソート基準となる列番号は、行フィールドの列数と集計値の列数を考慮して指定する必要があります。この例では、製品は1列、集計値(売上合計)も1列なので、2番目の列(集計列)に対して-2
と指定することで、売上合計の降順ソートが可能です。 54 55
ユーザー評価・感想:
PIVOTBY関数もGROUPBY関数と同様に、ピボットテーブルが持つ高度な集計機能を数式ベースで再現できるようになった点が、多くのExcelユーザーから高く評価されています。「PIVOTBYは動的なレポート作成や、他の計算式とのシームレスな連携に優れている」という声があり、ピボットテーブルの手動更新の手間を省き、レポート作成プロセスを自動化・共有しやすくする利点が指摘されています。
一方で、「従来のピボットテーブルの操作に慣れ親しんだユーザーにとっては、PIVOTBY関数の概念や引数の指定がやや難解に感じられるかもしれない」との意見も見られます。特にユーザーフォーラムなどでは、「PIVOTBY関数は、データベース言語であるSQLの考え方(GROUP BY句やPIVOT操作など)に親しんでいる人にとっては非常に有用だが、一般的なExcelユーザーにとっては、ピボットテーブルのドラッグ&ドロップによる直感的な操作の方が分かりやすいだろう」という指摘がなされています。
また、コミュニティではPIVOTBY関数と従来のピボットテーブル機能の比較や、どちらを使うべきかといった議論も活発に行われており、「PIVOTBY関数はピボットテーブルを完全に代替するものではない」という結論に至ることが多いようです。PIVOTBY関数のメリットとしては、数式であるため結果が直接セルに表示され、他の数式から容易に参照できる点(ピボットテーブルの結果を別シートで参照する際の手間が省ける)、そして元データが更新された際に自動的に再計算されるため、手動での「更新」操作が不要である点が挙げられます。 57
その反面、ピボットテーブル特有の豊富な「値の表示形式」設定(数値、日付、通貨など)、多彩な「レポートのレイアウト」オプション、行や列のグループをインタラクティブに折りたたんだり展開したりする機能、値フィールドをダブルクリックすることで詳細データをドリルダウン表示する機能などは、PIVOTBY関数ではユーザー自身が他の関数や機能を組み合わせて工夫して再現する必要がある、という点が指摘されています。あるユーザーは「PIVOTBY関数で出来ることは非常に多いが、最終的なレポートとして見栄え良く仕上げやすいのは、依然としてピボットテーブルである場面も多い」と述べ、それぞれのツールの特性を理解した上での適材適所の使い分けを提案しています。
総合すると、PIVOTBY関数は、高度なデータ分析やレポートの自動化といった用途向けの強力なツールとして歓迎されつつも、従来のピボットテーブルも依然としてその手軽さやインタラクティブ性において有用である、との評価が一般的です。
PERCENTOF関数
概要:
PERCENTOF関数は、指定した部分集合(data_subset
)の合計を、全体集合(data_all
)の合計で割り、その割合(百分率のもとになる比率)を計算する関数です。 59 数式的には、PERCENTOF(subset, total)
は SUM(subset) / SUM(total)
とほぼ等価であり、返される値は通常、0から1の間の小数(比率)になります。この結果のセルにパーセンテージ書式を適用することで、お馴染みの百分率表示(例: 25%)にすることができます。 58
PERCENTOF関数は単独の関数として使用することも可能ですが、特に前述のGROUPBY関数やPIVOTBY関数のfunction
引数に指定して使用することを主な目的として設計されています。 2 これにより、集計結果を、全体の合計や各グループ内での合計に対する割合として簡単に表現することが可能になります。
構文と引数:
=PERCENTOF(data_subset, data_all)
- data_subset
- 割合を計算する際の分子となる、部分集合の値(セル範囲または配列)を指定します。この引数は必須です。 59
- data_all
- 割合を計算する際の分母となる、全体集合の値(セル範囲または配列)を指定します。この引数も必須です。 60
通常、data_subset
とdata_all
は、同じサイズや構造を持つ範囲から抽出された値の組み合わせとして使用されます。例えば、全製品の売上データ(data_all
)に対して、特定の製品カテゴリの売上データ(data_subset
)が占める割合を計算する、といったケースです。PERCENTOF関数自体は単一の数値を返す集計関数であり、LAMBDA関数を使って同様の処理を =LAMBDA(sub, tot, SUM(sub)/SUM(tot))
と書くこともできますが、PERCENTOF関数はその簡易表現と位置づけることもできます。
使用例:
単独で使用する例:
あるワークシートのC3セルからC14セルまでに数値データが入力されており、その中でC3セルからC4セルの範囲のデータが全体(C3:C14)に占める割合を求めたい場合、以下のように記述します。 61
=PERCENTOF(C3:C4, C3:C14)
この数式は、範囲C3:C4の合計値(例えば、特定の2製品の売上合計)が、範囲C3:C14の合計値(例えば、全製品の売上合計)に対して何割を占めるのかを計算し、その比率(例: 0.15など)を返します。 61
GROUPBY関数との組み合わせ例:
GROUPBY関数と組み合わせることで、例えばカテゴリ別の売上が全社売上に占める割合の一覧を一度の数式で計算することができます。 62 例えば、tbl
という名前のテーブルに「カテゴリ」列と「売上」列があるとします。この場合、
=GROUPBY(tbl[カテゴリ], tbl[売上], PERCENTOF)
とすることで、各カテゴリの売上が、tbl[売上]
列全体の合計に対して何パーセントを占めるのかを計算できます。 62
PIVOTBY関数との組み合わせ例:
PIVOTBY関数の場合も、function
引数にPERCENTOFを指定することで、クロス集計表の各値を割合で表示することができます。さらに、PIVOTBY関数のrelative_to
引数を使用することで、何に対する割合を計算するか(例えば、行内の合計に対する割合、列内の合計に対する割合、全体の総計に対する割合など)を柔軟に切り替えることが可能です。 49 これにより、従来のピボットテーブルで提供されていた「列集計に対する比率 (%)」や「行集計に対する比率 (%)」といった表示を、数式のみで実現できるようになります。
ユーザー評価・感想:
PERCENTOF関数の登場は、多くのExcelユーザーから「待望の割合計算専用関数」として歓迎されています。従来、ピボットテーブルの機能を使えば「総計に対する比率」などを表示する設定はありましたが、ワークシート関数として同様の割合計算を自動化するには、ユーザー自身がSUM関数などを組み合わせて数式を作成する必要がありました。この手間が、PERCENTOF関数という単一の関数で簡潔に記述できるようになった点が、特に好評を得ています。
また、PERCENTOF関数は、GROUPBY関数やPIVOTBY関数といった新しい集計関数群と組み合わせて使用することで、その真価を最大限に発揮するため、ユーザーコミュニティでも「新しい集計関数ファミリーの一員」として注目されています。実際、Microsoftからの公式発表においても、PERCENTOF関数がこれらの集計関数を補完する「ボーナス関数(Bonus function)」として付加されたことが強調されており 2、集計機能をより便利にするツールという位置づけが明確です。ユーザーからは「PERCENTOF関数のおかげで、集計表の中に構成比やシェアを示す列を簡単に追加できるようになった」といった具体的な評価が見られ、特に財務報告や売上分析など、各項目の全体に対する構成比を迅速に算出する必要がある業務での活用が期待されています。一部では「単独で使われるというよりは、AGGREGATE関数の一種のような補助的な役割なので、それほど目立たないかもしれないが、実用性は非常に高い」という声もありますが、総じて、実務で頻繁に発生する割合計算をシンプルかつ直感的に記述できるようになった関数として、ポジティブな反応が大多数を占めています。
PY関数
概要:
PY関数は、Excelのセル内に直接Pythonコードを記述し、そのコードを実行して結果をExcel上のセル値やオブジェクトとして取得することができる、非常に革新的な関数です。 4 5 この機能は、2023年に「Python in Excel」としてプレビュー版が公開され、大きな注目を集めました。PY関数の登場により、Excelのワークシート関数からPythonスクリプトを呼び出すという、これまでにない使い方が可能になります。これにより、Pythonが持つ豊富なデータ分析ライブラリ(例えば、データ操作に強いPandasや、グラフ描画に優れたMatplotlibなど)をExcelシート上で手軽に利用できるようになり、Excelの従来の機能だけでは実現が難しかった高度な統計分析、複雑なデータ処理、機械学習モデルの簡単な利用、そして多様なビジュアライゼーション(グラフ作成)の一部を、使い慣れたExcelのインターフェースから実行できるようになります。 63
構文と使用方法:
=PY(python_code, return_type)
- python_code
- 実行したいPythonコードを文字列として指定します。セル内に直接Pythonコードを記述する場合は、
=PY("...ここにPythonコード...", ...)
のように、コード全体をダブルクォーテーションで囲みます。Pythonコード内では、Excelのセル範囲やテーブルのデータを参照するために、xl()
という特別な関数を使用できます。 64 例えば、xl("A1:B10")
と記述すると、セル範囲A1:B10の値をPython側でデータとして取得できます。 - return_type
- Pythonコードの実行結果をExcelに返す際のデータ型を指定する数値(0または1)です。 65
- 0: Pythonの実行結果を、Excelで扱える通常のデータ型(数値、文字列、日付、スピル可能な配列など)に変換して返します。これがデフォルトの動作であり、多くの場合に適しています。
- 1: Pythonの実行結果を、PythonオブジェクトのままExcelセル内に保持します。例えば、PandasのDataFrameオブジェクトなどをそのままExcelセルに格納できます。ただし、この場合Excelのセル上には「Python オブジェクト」といった特殊な表示になり、直接Excelの関数で内容を操作することは難しくなります。通常は、結果を値や配列として受け取るために0を指定する方が実用的です。
使用上の注意:
- PY関数は特殊な関数であり、通常のExcel関数とは異なり、数式バーから直接その内容(Pythonコード)を編集することはできません。セルに「
=PY(
」と入力してPY関数を選択すると、Pythonコードを記述するための専用のエディタウィンドウが起動します。 4 複数行にわたるPythonコードもこのエディタで記述し、記述が完了するとセルには=PY(...)
という形式の1行の数式として挿入されます。コードを再編集する場合も、同様に専用エディタを経由して行う必要があります。 - PY関数内のPythonコードは、ローカルPCではなく、Microsoftがクラウド上に用意した安全なコンテナ環境で実行され、その計算結果のみがExcelに返されます。そのため、この機能を利用するにはインターネット接続とMicrosoftアカウントでのサインインが必須となります。また、企業などの組織環境では、情報セキュリティポリシーに基づき、管理者がこの機能の利用を制限または無効化している場合があります。
- 現時点では、PY関数内のPythonコードからExcelブックの内容を直接書き換えたり(例えば、セルの値を変更したり)、Excelのグラフや図形といったオブジェクトを操作したりすることは基本的に制限されています。PY関数の主な役割は、ExcelのデータをPythonで処理・分析し、その結果をExcelシート上に返すことに焦点が当てられています。
使用例:
- 単純な計算:
=PY("print(10 * 5)", 0)
この数式は、Pythonで10 * 5
を計算し、その結果である50
をExcelのセルに数値として返します(Pythonのprint()
関数の出力が、PY関数の結果として扱われます)。 - Excelのセル範囲データを用いた集計:
例えば、ワークシートのA1セルからA100セルまでに数値データが入力されており、その合計をPythonのPandasライブラリを使って計算したい場合、以下のように記述できます。
=PY("import pandas as pd; data = xl('A1:A100', headers=False); result = pd.Series(data).sum(); print(result)", 0)
このコードでは、まずPandasライブラリをインポートし、xl('A1:A100', headers=False)
でExcelのA1:A100範囲のデータを取得し、それをPandasのSeriesオブジェクトに変換してからsum()
メソッドで合計を計算しています。計算結果はExcelのセルに数値として返されます。 - ExcelテーブルのデータをPythonでピボット集計:
複数の列を持つExcelテーブル(例えば、テーブル名「SalesTbl」)のデータをPythonでピボット集計し、その結果をExcelシート上に表示することも可能です。
=PY("import pandas as pd; df = xl('SalesTbl', headers=True); pivot_result = df.pivot_table(index='Product', columns='Year', values='Sales', aggfunc='sum'); print(pivot_result)", 0)
上記のコードは、Excelのテーブル「SalesTbl」のデータをPandasのDataFrameとして読み込み、pivot_table
メソッドを使って「Product」(製品)を行、「Year」(年)を列、「Sales」(売上)を集計値として合計(aggfunc='sum'
)するピボットテーブルを作成し、その結果をExcelに返しています。結果はExcelのシート上に動的配列としてスピル表示され、列見出しや行見出しも含まれる形で出力されます。 64
ユーザー評価・感想:
ExcelへのPython統合(PY関数)の発表は、Excelユーザーコミュニティ、特にデータ分析に関わるユーザーから非常に大きな反響を呼び、「Excelの機能が新たな次元に拡張された」といった興奮の声も聞かれました。データサイエンティストやアナリストからは、「使い慣れたExcelのインターフェース上で、PandasやMatplotlibといった強力なPythonライブラリを直接利用できるのは画期的だ」という高い評価が多く寄せられています。例えば、オンラインフォーラムRedditのExcel関連コミュニティでは、「PY関数を使えば、Excelの標準機能だけでは実現が困難だった複雑なデータ処理や分析も、より高速かつシンプルに記述できるようになった」といったコメントが多くの支持を得ており、コードの可読性や処理効率の向上を指摘するユーザーがいます。
一方で、「Pythonを使うのであれば、Excelとは独立した環境でPythonスクリプトを作成・実行すれば良いのではないか」といった、より慎重な意見や疑問の声も存在します。つまり、Excel内でPythonを動作させることの具体的なメリットは限定的であり、また、企業のIT部門によってはセキュリティ上の懸念からこの機能の利用が許可されない場合もあるため、実際の業務でどこまで広く活用されるかは未知数である、という見方です。実際、「多くの職場環境では、一般ユーザーにPythonコードの実行権限を与えることは難しいだろう」といった現実的な指摘も見られました。
総合すると、Python言語に既に習熟しているユーザーにとっては、PY関数はExcelの能力を飛躍的に高める強力な武器となり得る一方で、Pythonに馴染みのないユーザーにとっては、無理にこの機能を使う必要はなく、従来のExcelの機能でも十分であるとの見方が多いようです。「新しい技術を学ぶことを楽しめるなら積極的に試してみる価値はあるが、そうでなければ従来のExcelの使い方でも問題ない」という声や、「ExcelにおけるPython利用はあくまでオプション機能の一つであり、それぞれの業務や目的に応じて選択すべきだ」といった冷静な意見も見受けられます。また、「Excelの自動化処理であれば引き続きVBAで十分であり、PythonはExcelの外部でデータ分析ツールとして活用すべきだ」という、より保守的な意見も根強く存在します。
しかしながら、この新機能に対する注目度は非常に高く、「将来的にはExcelを使った業務の幅を大きく広げる可能性を秘めている」と感じているユーザーも少なくありません。今後の機能拡張(例えば、オフラインでの利用対応や、Excelオブジェクト操作機能の追加など)次第では、このPY関数の評価もさらに向上していくことが期待されます。
REGEXTEST関数
概要:
REGEXTEST関数は、指定したテキスト文字列が、特定の正規表現(Regex)パターンに一致するかどうかをチェックする関数です。結果は、一致した場合はTRUE(真)、一致しなかった場合はFALSE(偽)というブール値を返します。この関数の登場により、「入力されたセルの値が特定の書式(例えば、メールアドレスや電話番号の形式)を満たしているか」「文字列の中に数字や特定の記号が含まれているか」といった判定を、従来の複雑な関数の組み合わせ(FIND関数、LEFT関数、MID関数、LEN関数などをネストするなど)よりもはるかに簡潔かつ柔軟に行えるようになりました。Excelでは長らく標準機能として正規表現を扱うことができず、VBA(Visual Basic for Applications)やOffice Scriptsといったプログラミング手段を用いる必要がありましたが、REGEXTEST関数をはじめとする新しいREGEX関連関数の追加により、ワークシート関数レベルでネイティブに正規表現が利用可能になったことは、大きな進歩と言えます。
構文:
=REGEXTEST(text, pattern, [case_sensitivity])
- text
- 判定の対象となるテキスト文字列、またはそのテキストが含まれるセル参照を指定します。この引数は必須です。 71
- pattern
- 一致を確認したい正規表現パターンを文字列として指定します。この引数も必須です。 72 例えば、
"[0-9]+"
(1回以上の数字の連続)、"^[A-Z]{3}$"
(大文字アルファベット3文字のみで構成される文字列)といった、Perl互換正規表現(PCRE2)の書式で記述します。 73 - [case_sensitivity] (オプション)
- 大文字と小文字を区別するかどうかを数値で指定します。 74
- 0: 大文字と小文字を区別します(デフォルトの動作)。
- 1: 大文字と小文字を区別しません。 75
省略した場合は、大文字と小文字を区別するケースセンシティブな判定が行われます。例えば、パターンとして
"Apple"
を指定した場合、デフォルトでは"apple"
というテキストには一致しませんが、case_sensitivity
引数に1を指定すると一致するようになります。
REGEXTEST関数は、対象のテキスト文字列全体の一部にでも指定した正規表現パターンが見つかればTRUEを返します。 76 もし、テキスト全体がパターンに完全に一致することを要求する場合は、正規表現パターン文字列の先頭に^
(行頭アンカー)、末尾に$
(行末アンカー)を使用して、パターン全体を囲む必要があります。
使用例:
- 文字列に数字が含まれているかのチェック:
例:=REGEXTEST("Excel 365", "[0-9]")
は、文字列 “Excel 365” の中に数字 “3”, “6”, “5” が含まれているため、TRUEを返します。 77
逆に、=REGEXTEST("ExcelRocks", "[0-9]")
は、数字が含まれていないためFALSEを返します。 - 日本の郵便番号形式(NNN-NNNN)のチェック:
例: セルA1に入力された値が、日本の郵便番号形式(例: “123-4567″)であるかどうかを判定するには、以下のようにします。
=REGEXTEST(A1, "^[0-9]{3}-[0-9]{4}$")
この正規表現パターンは、先頭(^
)から3桁の数字([0-9]{3}
)、次にハイフン(-
)、次に4桁の数字([0-9]{4}
)、そして末尾($
)までが完全に一致することを要求します。これにより、入力データの書式チェック(データの入力規則)などに応用できます。 78 - 電話番号の形式(例: (090)-1234-5678)のチェック:
例えば、米国の電話番号形式のような(###) ###-####
の形式かどうかを確認するには、以下のように記述できます。(パターン内の括弧(
や)
は、正規表現の特殊文字であるため、文字そのものとして一致させるにはバックスラッシュ\
でエスケープする必要があります。)
=REGEXTEST(A1, "^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$")
79 - 複数の条件(使用可能な文字種の制限など)のチェック:
例: セルB2に入力された文字列が、英数字とアンダースコアのみで構成されているかどうかを判定し、そうであれば “OK”、そうでなければ “使用不可文字あり” と表示するには、IF関数と組み合わせて以下のように使用できます。
=IF(REGEXTEST(B2, "^[A-Za-z0-9_]+$"), "OK", "使用不可文字あり")
ユーザー評価・感想:
Excelに正規表現関連の関数が導入されたことは、多くの長年のExcelユーザー、特にプログラマーやデータ分析に携わる人々から、驚きと大きな喜びをもって迎えられました。Excelフォーラムやコミュニティでは、「ついにExcelでも、他の多くのプログラミング言語やツールで標準的に使われているRegex(正規表現)がネイティブに利用できるようになった!」といった歓迎の声が多数上がっています。特に、競合するスプレッドシートソフトウェアであるGoogle Sheetsには、既にREGEXMATCH
といった同等の機能が存在していたため、Excelへの搭載を待ち望んでいたユーザーは少なくありませんでした。「新しいREGEX関数群は、Excelにおけるテキストデータ処理のあり方を根本から変えるゲームチェンジャーだ」という非常に高い評価のコメントも見られ、これまで複雑な数式の組み合わせやVBAマクロを駆使しなければ実現できなかった高度な文字列操作が、これらの新関数によって飛躍的に簡単かつ直感的に行えるようになる点が高く評価されています。
実際、あるユーザーは「REGEXTEST関数を使えば、データの入力規則で非常に柔軟なパターン指定が可能になる」と述べ、例えば、国ごとに異なる郵便番号のフォーマットや、社内システムで使用される特定のSKUコード(商品管理コード)の書式チェックを、以前よりもはるかに簡潔かつ正確に実装できるようになった具体例を挙げています。また、プログラマー向けのQ&AサイトであるStack Overflowなどでも、以前は「Excelで正規表現を使って文字列を操作する方法は?」という質問に対して、「VBAマクロを作成するしかありません」という回答が定番でしたが、これらの新関数が登場して以降は、「最新のExcel 365であれば、REGEXTEST、REGEXEXTRACT、REGEXREPLACEといった関数で解決できるケースが増えています」と案内されることが多くなっています。
コミュニティでは、case_sensitivity
引数のデフォルト値が0(大文字・小文字を区別する)である点について、「多くの正規表現エンジンではデフォルトで大文字・小文字を区別しない(case-insensitive)ことが多いので、Excelのこの仕様には少し注意が必要だ」といった技術的な指摘や、\w
(単語構成文字)や\b
(単語境界)といった正規表現の特殊なエスケープシーケンスが、日本語や中国語など、英数字以外の多バイト文字を含む言語環境で期待通りに100%動作するかどうかといった、より詳細な技術的検証や議論も活発に行われています。 83 84
全般的に見ると、「長年待ち望んでいた正規表現機能が、ついにExcelに正式に搭載された」という非常に肯定的な評価が支配的であり、REGEXTEST関数はその中でも最も基本的な機能を提供しながらも、実務における入力データの検証や特定のパターンの有無の確認といった用途にすぐに役立つ便利な関数として、多くのユーザーに歓迎されています。
REGEXEXTRACT関数
概要:
REGEXEXTRACT関数は、指定したテキスト文字列の中から、正規表現パターンに一致する部分文字列を抽出して返す関数です。 85 テキスト中にパターンが複数箇所一致する場合や、正規表現の強力な機能である「キャプチャグループ」を利用して、パターン内の一部分だけを個別に抽出することも可能で、引数の指定によって抽出モードを柔軟に切り替えられる点が大きな特徴です。例えば、「文章中から最初のメールアドレスだけを抜き出す」「あるログデータの中から全ての日付情報を抽出する」「製品コードの中から特定の意味を持つ部分(例: カテゴリコードや製造年月日を示す部分)だけを取り出す」といった、従来のExcel関数だけでは非常に困難だった、あるいは不可能だった高度なテキスト解析やデータ抽出が、この関数一つで実現できるようになります。抽出された結果は、Excel 365の動的配列機能により、必要に応じて複数のセルにスピル(自動的に展開)されます。
構文:
=REGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity])
- text
- 抽出の対象となる元のテキスト文字列、またはそのテキストが含まれるセル参照を指定します。この引数は必須です。 86
- pattern
- 抽出したい部分文字列のパターンを定義する正規表現を文字列として指定します。この引数も必須です。 87
- [return_mode] (オプション)
- 抽出のモード(方法)を数値で指定します。 88 省略した場合や0を指定した場合は、デフォルトの動作となります。指定可能な値は以下の通りです。
- 0 (または省略): パターンに最初に一致した文字列のみを返します。 89
- 1: パターンに一致した全ての文字列を、配列として返します(これにより、テキスト中に出現する複数の該当箇所を一度に全て抽出できます)。 90
- 2: パターンに最初に一致した部分について、正規表現パターン内で定義された各「キャプチャグループ」の内容を個別に配列として返します。 90 キャプチャグループとは、正規表現パターンの中で括弧
(...)
で囲まれた部分を指し、これによりパターン全体だけでなく、その一部分だけを個別に参照・抽出できます。例えば、([A-Za-z]+)\s([0-9]+)
というパターンには2つのキャプチャグループ(アルファベットの連続と数字の連続)が含まれます。return_mode
に2を指定すると、これらのグループそれぞれに一致した文字列が、別々の要素として配列で返されます。 91
- [case_sensitivity] (オプション)
- 大文字と小文字を区別するかどうかを指定します (0 = 区別あり (デフォルト)、1 = 区別なし)。これはREGEXTEST関数の同名引数と同様の働きをします。 92
REGEXEXTRACT関数は、抽出した結果をテキスト(文字列)として返す点に注意が必要です。 93 たとえ数字の列を抽出した場合でも、その結果は文字列型となります。そのため、抽出した数値をExcelの計算に使用する際には、VALUE
関数などを用いて明示的に数値型に変換するか、四則演算(*1
や +0
など)を行うことでExcel側で自動的に数値として解釈させる必要があります。 93
使用例:
- 最初に一致した部分文字列の取得 – 英文氏名の抽出:
セルB2に「Sonia Rees (378) 744-4195」のように「氏名 (電話番号)」形式の文字列が入力されているとします。この文字列から、最初の空白で区切られた氏名部分(名と姓)を抽出するには、以下のように記述できます(英文の氏名を想定)。
=REGEXEXTRACT(B2, "[A-Za-z]+ [A-Za-z]+")
(この例ではreturn_mode
を省略しているため、デフォルトの0が適用されます。)
この正規表現パターン"[A-Za-z]+ [A-Za-z]+"
は、「1回以上のアルファベットの連続(名)、その後に続く1つの空白、そして再び1回以上のアルファベットの連続(姓)」に一致する最初の部分を探します。上記B2セルの例では、”Sonia Rees” という文字列が抽出されます。 94 - 一致した全ての部分文字列の取得 – 文章中の全ての数字列を抽出:
セルA1に “注文番号 123 は 2023-07-15 に発送され、追跡番号は 456789 です。” という日本語のテキストが含まれているとします。この文字列の中から、連続した数字の部分を全て抜き出すには、以下のように記述します。
=REGEXEXTRACT(A1, "[0-9]+", 1)
パターン"[0-9]+"
は1回以上連続する数字を意味し、return_mode
に1を指定しているため、このパターンに一致する全ての箇所(この例では “123”, “2023”, “07”, “15”, “456789” の5つ)が配列として返されます。結果は通常、Excelのシート上で横方向の複数のセルにスピル表示されます(もし縦方向に表示したい場合は、TRANSPOSE
関数で結果を転置することも可能です)。 - キャプチャグループを利用した抽出 – メールアドレスからユーザー名とドメイン名を個別に抽出:
例えばセルA1に “user.name@example.co.uk” というメールアドレスが入力されている場合、正規表現パターンにキャプチャグループを用いて、ユーザー名部分とドメイン名部分を別々に抽出することができます。
=REGEXEXTRACT(A1, "^([^@]+)@([^@]+)$", 2)
この数式の結果は、{"user.name", "example.co.uk"}
という2つの要素からなる配列になります。パターンの解説:^
と$
は、それぞれ文字列の先頭と末尾にアンカー(位置を固定)します。([^@]+)
は最初のキャプチャグループで、「@」以外の文字が1回以上連続する部分(つまりユーザー名部分)に一致します。@
は、アットマークそのものに一致します。([^@]+)
は2番目のキャプチャグループで、「@」以降の「@」以外の文字が1回以上連続する部分(つまりドメイン名部分)に一致します。
return_mode
に2を指定しているため、これら2つのキャプチャグループそれぞれに一致した文字列、すなわち “user.name”(ユーザー名)と “example.co.uk”(ドメイン名)が個別の要素として配列で返され、隣り合うセルにスピル表示されます。 - 抽出後の結果を利用した計算 – 単位付きの数値文字列から数値部分を抽出して演算:
B列に「$123.45」や「¥6789」のように通貨記号やその他の単位が付いた金額が文字列として入力されているとします。この文字列から数値部分だけを抽出し、それに例えば10%の消費税を加算する計算を行いたい場合、以下のように記述できます。
=VALUE(REGEXEXTRACT(B2, "[0-9.]+")) * 1.1
この例では、REGEXEXTRACT(B2, "[0-9.]+")
が、B2セルの文字列から通貨記号「$」や「¥」などを無視して、数字とピリオドで構成される部分(例: “123.45”)を文字列として抽出します。その後、VALUE
関数がこの文字列を実際の数値(例: 123.45)に変換し、その結果に1.1を掛けています。このように、他の関数と組み合わせることで、より実用的なデータ処理が可能になります。
ユーザー評価・感想:
REGEXEXTRACT関数は、Excelに搭載された新しい正規表現関数群の中でも、特にその応用範囲の広さから、多くのユーザー、特に開発者やデータアナリストから熱い支持を受けています。Excelユーザーコミュニティでは、「この関数の登場で、ExcelでもGoogle SheetsのREGEXEXTRACT
関数並みに簡単に、そしてそれ以上に柔軟に正規表現によるデータ抽出ができるようになった!」といった喜びの声が多く上がっています。例えば、「これまで複雑なテキスト関数を何重にもネストしていた処理や、VBAマクロを書かなければ不可能だった、テキスト中から複数の数値や特定のコード(製品コード、IDなど)を全て一度に抜き出す作業が、この関数一つで、しかも一発でできて感動した」といった具体的な使用報告も多数見られます。
Excelの公式ブログでも、これらの新しい正規表現関数が「複雑なテキスト処理がまるで魔法のように簡単になる」と紹介されており 85、ビジネスSNSであるLinkedInなどで情報発信を行っているExcelの専門家やMVP(Most Valuable Professional)たちも、「新しいREGEX関数群は、Excelにおけるデータ抽出やデータ操作の側面において、まさにゲームチェンジャー(状況を一変させるもの)だ」と高く評価しています。
ユーザー具体的な意見として特に注目されているのは、「キャプチャグループへの対応が素晴らしい。これはGoogle SheetsのREGEXEXTRACT
関数には無かった(あるいは限定的だった)機能だ」という指摘です(Google Sheetsの同名関数は、主に最初の一致か全ての一致を返すことに特化しており、パターン内の一部分だけをグループとして個別に抽出する機能はExcel版ほど直感的ではありませんでした)。実際、Excel版のREGEXEXTRACT関数では、return_mode
引数に2を指定することで、正規表現パターン内で括弧(...)
で定義した複数のキャプチャグループの内容を、それぞれ個別のデータとして一度に抽出できるため、例えば「フルネームの文字列から、姓と名を別々のセルに分割して抽出する」といった、より高度なデータ分解作業も容易に行えるようになります。これにより、Excelの標準関数であるTEXTBEFORE
関数やTEXTAFTER
関数では対応が難しい、より柔軟で複雑な条件に基づいた文字列の分割や抽出も、正規表現パターンの記述次第で実現可能になります。
ユーザーから実際に寄せられた具体的な使用例としては、「ウェブサイトのアクセスログのような複雑な構造のテキストデータから、特定形式のユーザーIDやセッションIDを全て一括で抜き出したい」「SNSの投稿文に含まれるハッシュタグ(#から始まるタグ)を全てリストとして取得したい」といった、これまで手間がかかっていた課題に対して、REGEXEXTRACT関数を用いることでシンプルかつエレガントに解決できた、との成功報告が多数あります。
一方で、パフォーマンス面に関しては、「非常に大量のデータ(例えば数万行以上)に対してこの関数を適用すると、正規表現の複雑さによっては計算コストが高くなるのではないか?」といった懸念の声も一部で見られますが、現時点では深刻なパフォーマンス問題の報告は少なく、多くの場合において実用的な速度で動作すると認識されています。総じて、REGEXEXTRACT関数は、「Excelにおけるテキストデータ操作の可能性を飛躍的に広げる、非常に強力で柔軟な新関数」として、ユーザーコミュニティから極めてポジティブに受け止められています。
REGEXREPLACE関数
概要:
REGEXREPLACE関数は、指定したテキスト文字列内で、正規表現パターンに一致する部分を、新しい指定したテキストで置換する機能を持つ関数です。 95 これは、Excelの従来からあるSUBSTITUTE
関数の正規表現対応版と考えることができ、単純な文字列の一致だけでは対応が難しかった、より柔軟で高度な文字列の置換処理を可能にします。例えば、「連続する複数の空白(スペースやタブなど)を単一の空白にまとめる」「文章中の全ての数字を、丸で囲んだ形式の文字(例: ①、②)に置換する」「テキストデータから特定のパターン(例: HTMLタグや制御文字など)だけを削除する(空文字列に置換する)」といった、データクレンジングや書式統一に役立つ多様な操作が、比較的簡潔な数式で実現できるようになります。また、オプションの引数を指定することにより、パターンに一致した箇所のうち、特定の出現回数のものだけを置換する、といった細やかな制御も可能です。
構文:
=REGEXREPLACE(text, pattern, replacement, [occurrence], [case_sensitivity])
- text
- 置換の対象となる元のテキスト文字列、またはそのテキストが含まれるセル参照を指定します。この引数は必須です。
- pattern
- 置換したい部分文字列のパターンを定義する正規表現を文字列として指定します。この引数も必須です。
- replacement
- 正規表現パターンに一致した部分を置き換えるための新しい文字列を指定します。この引数も必須です。この
replacement
文字列の中では、正規表現の強力な機能である「後方参照(バックリファレンス)」を利用することができます。例えば、$1
(または\1
の形式も使える場合があります)は、pattern
引数内で定義された最初のキャプチャグループ(括弧(...)
で囲まれた部分)に実際に一致した文字列を指し、同様に$2
は2番目のキャプチャグループの内容を指します。これを利用することで、「パターンに一致した文字列の一部分だけを取り出して並び替える」「特定の文字列の順序を変更して再構成する」といった、より高度な置換処理が可能になります。 - [occurrence] (オプション)
- 置換を実行する、パターンに一致した箇所の出現回数を指定します。デフォルト(この引数を省略した場合、または0を指定した場合)では、テキスト内でパターンに一致した全ての箇所が置換の対象となります。 96 1以上の正の整数を引数として指定すると、そのn番目に一致した箇所に対してのみ置換が実行されます。 97 例えば、1を指定すれば最初に見つかった一致箇所のみが置換され、2を指定すれば2番目に見つかった一致箇所のみが置換され、それ以外の一致箇所は変更されずにそのまま残ります。
- [case_sensitivity] (オプション)
- 大文字と小文字を区別するかどうかを指定します (0 = 区別あり (デフォルト)、1 = 区別なし)。 95 これは、REGEXTEST関数やREGEXEXTRACT関数の同名引数と同様の働きをします。
使用例:
- 一致した全ての箇所を置換(デフォルト動作) – 文字列中の数字をマスク(隠す):
セルA1に “注文ID: 12345, 製品コード: 67890” といった機密情報を含む可能性のある文字列が入力されているとします。この文字列中の全ての連続した数字部分を、プライバシー保護のために「***」という文字列に置き換えたい場合、以下のように記述できます。
=REGEXREPLACE(A1, "[0-9]+", "***")
この例では、occurrence
引数を省略しているため、パターン"[0-9]+"
(1回以上の数字の連続)に一致する全ての箇所が置換の対象となります。結果として、”注文ID: ***, 製品コード: ***” のような文字列が得られます。 - 特定の出現回数だけを置換 – 文章中の特定の単語のうち、指定した出現順のものだけを編集:
セルB1に “apple, banana, apple, orange” という文字列が入力されているとします。この文字列中には “apple” という単語が2回出現していますが、例えば2回目の “apple” だけを大文字の “APPLE” に変換したい場合、以下のように指定します。
=REGEXREPLACE(B1, "apple", "APPLE", 2)
この数式により、2番目に出現した “apple” のみが “APPLE” に置き換えられ、結果として “apple, banana, APPLE, orange” という文字列が得られます。 - 正規表現パターンと後方参照を利用した高度な置換 – 日付表記のフォーマット変換:
セルC1に “2025/05/19” という YYYY/MM/DD 形式の日付文字列が入力されているとします。これを MM-DD-YYYY 形式(例: “05-19-2025″)に並び替えたい場合、キャプチャグループと後方参照を組み合わせて以下のように記述できます。
=REGEXREPLACE(C1, "^([0-9]{4})/([0-9]{2})/([0-9]{2})$", "$2-$3-$1")
この正規表現パターンでは、年([0-9]{4}
)、月([0-9]{2}
)、日([0-9]{2}
) の部分をそれぞれ括弧(...)
で囲んで3つのキャプチャグループとして定義しています。置換文字列の"$2-$3-$1"
では、これらのキャプチャグループの内容を$n
の形で参照し、月($2
)、日($3
)、年($1
)の順序でハイフン区切りで再構成しています。結果として、”05-19-2025″ という文字列が得られます。このように、REGEXREPLACE関数は、単純な文字列の置き換えだけでなく、「テキストの構造変換」といったより高度な用途にも応用できます。 - 複数の種類の記号を一括で削除 – 不要な文字の除去:
例えばセルD1に “重要 (機密) [内部資料] !” といった文字列があり、この中から丸括弧()
と角括弧[]
、およびそれらに囲まれた内容を全て削除して、”重要 !” という文字列だけにしたい場合、以下のように少し複雑なパターンを工夫して記述できます。(ただし、この例では括弧とその中身を削除するパターンはより高度になるため、ここでは単純に括弧文字自体を削除する例を示します。)
括弧文字自体を削除する場合:=REGEXREPLACE(D1, "[\(\)\[\]]", "")
この正規表現パターン"[\(\)\[\]]"
では、文字クラス[...]
の中で、正規表現の特殊文字である丸括弧(
,)
と角括弧[
,]
を、それぞれバックスラッシュ\
でエスケープして文字そのものとして指定し、これらを空文字列""
で置換しています。結果は “重要 機密 内部資料 !” のようになります(この後、連続する空白をTRIM関数で整形する必要があるかもしれません)。
ユーザー評価・感想:
REGEXREPLACE関数は、特にデータクレンジング(不要な文字の除去や表記の揺れの統一など)や、外部から取り込んだデータの書式統一といった、高度なテキスト整形処理においてその真価を発揮するため、そうしたニーズが高い現場のExcelユーザーから大変歓迎されています。ユーザーコミュニティでは、「この関数の登場で、これまでVBAマクロや外部ツールに頼らざるを得なかった複雑な文字列置換処理が、Excelのワークシート関数だけで完結するようになった!」と喜びの声が上がっており、例えば「WebページからコピーしてきたHTMLタグが混じったテキストデータから、特定のタグを一括で除去するのに非常に重宝した」といった具体的な活用フィードバックが見られます。
また、プログラマー向けのQ&AサイトであるStack Overflowなどでは、以前から「Excelのワークシート関数だけで、正規表現を用いた高度な文字列置換を行う方法はありますか?」という質問が数多く寄せられていましたが、これまでは「残念ながら、Excelの標準関数だけでは不可能です。VBAマクロを作成する必要があります」という回答がほとんどでした。しかし、このREGEXREPLACE関数が登場して以降は、回答者側からも「最新のExcel 365であれば、新しく追加されたREGEXREPLACE関数が使えますよ」と案内するケースが格段に増えています。
コミュニティ内では、occurrence
引数の挙動(特に0が全置換を意味する点)について、「一瞬戸惑うかもしれないが、これはExcelの既存のSUBSTITUTE
関数の第4引数(置換対象のインスタンス番号)と似た概念だ」という理解が示されています。実際、SUBSTITUTE
関数でも第4引数を省略すると全ての一致箇所が置換されるため、Excelの関数仕様に詳しいユーザーにとっては比較的自然な設計と言えるでしょう。 96
さらに、正規表現ならではの強力な機能である「後方参照(バックリファレンス)」を利用した置換についても注目が集まっており、「これまでLEFT
関数、MID
関数、RIGHT
関数、FIND
関数などを複雑に組み合わせて、まるでパズルのように頑張って実現していた文字列の並び替えや再構成といった処理が、この関数と正規表現を使えば非常に簡単に、そして直感的に記述できるようになった」との評価が数多く見られます。例えば、前述の日付フォーマットの変換例などは、「これまではTEXT関数や各種文字列操作関数の組み合わせで苦労していた処理が、まさに一発で実現できる!」と、その威力に驚きの声が上がっています。
全体として、Excelに新しく追加された正規表現関数群の中でも、REGEXREPLACE関数は特にデータのクレンジングやフォーマット修正といった実用的な場面で即戦力となる強力な機能を持つとの評価が多く、「Excelのテキスト置換機能が、実に数十年ぶりに大幅に強化された」と、多くのユーザーから熱烈に歓迎されています。
TRANSLATE関数
概要:
TRANSLATE関数は、セル内のテキストをある言語から別の言語に翻訳するための新しい関数です。 9 10 この関数は、Microsoftが提供するクラウドベースの翻訳サービス(Microsoft Translator)と連携しており、Excelのワークシート上で直接、多言語間の翻訳を実行することができます。対応言語は100以上に及び 10、例えば英語の文章を日本語に翻訳したり、日本語のテキストを中国語やスペイン語に翻訳したりといったことが、単一のExcel数式で手軽に行えるようになります。また、便利な機能として自動言語検出機能も備えており、翻訳元の言語を指定しなかった場合(引数を省略した場合)でも、入力されたテキストの言語を翻訳サービスが自動的に推定して翻訳処理を行います。 99 TRANSLATE関数の登場により、Excelは単なる数値計算やデータ集計のツールに留まらず、言語の壁を越えたグローバルなデータ連携やコミュニケーションを支援するツールとしての側面も強化されたと言えるでしょう。
構文:
=TRANSLATE(text, [source_language], [target_language])
- text
- 翻訳したい元のテキスト文字列、またはそのテキストが含まれるセル参照を指定します。この引数は必須です。 100 複数のセル範囲(配列)を指定することも可能で、その場合は、配列内の各セルのテキストが個別に翻訳され、結果が動的配列としてスピル表示されます。
- [source_language] (オプション)
- 翻訳元のテキストの言語を、言語コード(例: “en” は英語、”ja” は日本語、”zh-CN” は簡体字中国語など)で指定します。 99 この引数を省略した場合、または空文字列 (“”) を指定した場合は、Microsoft Translatorサービスが入力テキストの言語を自動的に判定します。 101 自動言語検出は多くの主要言語で高い精度で機能しますが、入力テキストが非常に短い場合(単語一つなど)や、言語の判別が難しい曖昧な表現が含まれる場合には、誤判定の可能性もゼロではありません。そのため、翻訳元の言語が明確に分かっている場合は、この引数を指定する方がより確実な翻訳結果を得られるとされています。 102
- [target_language] (オプション)
- 翻訳先の言語を言語コードで指定します。 103 この引数を省略した場合は、通常、Excelアプリケーションが動作している環境のシステム言語(例えば、日本語版のExcel環境であれば “ja”)がデフォルトの翻訳先として使用される可能性があります。 104 しかし、意図した言語に確実に翻訳するためには、この引数で翻訳先の言語コードを明示的に指定することが一般的かつ推奨される使い方です。サポートされている言語とその言語コードの一覧は、Microsoftの公式サポートドキュメントなどに提示されています。 101 10
使用例:
- 基本的な翻訳 – 英語から日本語へ:
セルA1に “Hello, world!” という英語のテキストが入力されているとします。これを日本語に翻訳するには、以下のように記述します。 105
=TRANSLATE(A1, "en", "ja")
この数式の結果として、セルには “こんにちは、世界!” という日本語訳が表示されます。ここでは、source_language
(翻訳元言語)に “en” (英語)、target_language
(翻訳先言語)に “ja” (日本語) を指定しています。 - 翻訳元言語の自動検出を利用した翻訳 – スペイン語から英語へ:
セルA2に “¿Cómo está usted?” というスペイン語のテキストが入力されているとします。この原文の言語をExcelに自動で判定させ、英語に翻訳したい場合は、以下のようにsource_language
引数を省略(または空文字列 “” を指定)して記述します。
=TRANSLATE(A2, , "en")
または=TRANSLATE(A2, "", "en")
このようにsource_language
引数を空にするか省略すると、Microsoft Translatorサービスによる自動言語検出機能が働きます。この例では、入力テキストがスペイン語であると正しく判断され、英語に翻訳された結果(例: “How are you?”)がセルに表示されます。翻訳サービス側の言語検出精度は一般的に高いですが、万が一、誤認識された場合には、翻訳元の言語コードを明示的に指定する必要があります。 - 複数のセル範囲のテキストを一括で翻訳:
例えば、B1セルからB3セルの範囲に、それぞれ異なる言語の挨拶文(B1: “Bonjour”(フランス語)、B2: “Hello”(英語)、B3: “こんにちは”(日本語))が入力されているとします。これらのテキストを全て英語に翻訳して一覧表示するには、以下のように記述します。
=TRANSLATE(B1:B3, , "en")
この数式の結果は、動的配列としてそれぞれの英訳が縦方向(または元の配列形状に応じて)隣接するセルにスピル表示されます。例えば、{“Hello”; “Hello”; “Hello”} といった形で、各セルの言語が自動的に判定され、それぞれ英語に翻訳された結果が得られます。
注意事項:
- TRANSLATE関数は、Microsoftが提供するオンラインの翻訳サービスを利用するため、この関数を使用するにはインターネット接続が必須となります。また、通常、MicrosoftアカウントでのExcelへのサインインも必要です。
- 翻訳サービスの利用には、一定期間内のリクエスト回数や翻訳文字数に上限(クォータ)が設定されている場合があります。 106 大量のテキストデータを一度に翻訳しようとした場合や、短時間に多数のリクエストを送信した場合などには、「Request Throttled(要求がスロットリングされました)」といったエラーが表示され、一時的に翻訳機能が利用できなくなることがあります。そのような場合は、時間をおいて再度試すか、必要に応じてMicrosoftのサポートに問い合わせることが推奨されます。 106
- 翻訳結果の品質は、Microsoft Translatorサービスの現在の性能に依存します。一般的な日常会話やビジネス文書などでは非常に高い品質の翻訳が期待できますが、専門用語が多く含まれる技術文書や、微妙なニュアンスが重要な文学作品などの翻訳においては、必ずしも完璧な結果が得られるとは限りません。そのため、公式な文書や重要なコミュニケーションで翻訳結果を利用する際には、必ず人間の目による確認や校正を行うことが推奨されます。
ユーザー評価・感想:
TRANSLATE関数の登場は、「ついにExcelがリアルタイムの多言語翻訳機能を標準で手に入れた!」として、多くのExcelユーザー、特にグローバルな業務に携わる人々から大きな驚きと期待をもって受け止められています。Microsoft Tech Communityのフォーラムでは、「これは言語の壁を取り払い、国際的なコラボレーションを促進する素晴らしい追加機能だ!」といった非常に好意的なコメントが多数見られました。 9 10 特に、海外拠点とのやり取りや、多言語で記述されたレポート・アンケート結果などを扱うユーザーからは、「この関数のおかげで、これまで外部の翻訳ツールを使ったり、専門業者に依頼したりしていた翻訳作業の手間が大幅に削減される」「多言語で構成されたデータセットの集計や分析が格段に容易になる」といった、具体的な業務改善への期待の声が上がっています。
オンラインフォーラムのRedditなどでも、「まるでGoogle翻訳のような高機能な翻訳ツールが、Excelのワークシート関数として直接使えるようになるなんて、夢のようだ」という反応が見られ、実際の翻訳結果の品質についても、「想像していたよりもかなり精度が高く、実用に耐えうるレベルだ」といった肯定的な報告が多数寄せられています。
一方で、いくつかの懸念点や注意点も指摘されています。最も多いのは、「この関数はクラウドサービスに依存しているため、インターネットに接続できないオフライン環境では利用できない」「企業のセキュリティポリシーによっては、外部のオンラインサービスへの通信が許可されておらず、結果としてこの便利な機能を利用できない場合がある」といった、利用環境に関する制約です。実際、企業環境では情報システム部門の管理者がこの機能を組織全体として有効化していない限り、個々のユーザーが利用できないケースも考えられます。 107 108 また、一部のユーザーからは、「機械翻訳の結果をそのまま利用するのではなく、最終的には人間の目で確認し、必要に応じて微調整を行うことになる。その際、TRANSLATE関数の結果を直接編集するよりも、一度翻訳結果をコピーして値として貼り付けてから修正する方が手間がかからないため、結局は一手間増える」といった、実用上の運用に関する意見も見られます。このため、TRANSLATE関数を完璧な自動翻訳ツールとして過信するのではなく、あくまで高品質な「下訳」を迅速に得るためのツールとして活用し、最終的な仕上げは人間が行うという使い方が現実的であるとも言われています。
総じて、TRANSLATE関数が持つ「Excel内で手軽に多言語翻訳ができる」という斬新さと利便性は、多くのユーザーから高く評価されており、「特に簡単なフレーズや単語レベルの翻訳、あるいは大量のテキストデータの大まかな内容把握といった用途には非常に重宝する」との声が多いようです。今後、翻訳精度のさらなる向上や、ユーザー辞書機能、業界特有の用語集(ターミノロジー)への対応といった高度な機能が拡充されれば、ビジネスプロセスをさらに効率化し、グローバルなコミュニケーションを円滑にするための大きな力になるだろうと期待されています。
DETECTLANGUAGE関数
概要:
DETECTLANGUAGE関数は、指定したテキスト文字列が、どの言語で記述されているかを自動的に判定し、その言語を表す国際標準の言語コード(例えば、英語であれば “en”、フランス語であれば “fr”、日本語であれば “ja” など)を返す新しい関数です。 11 109 この関数は、内部的には前述のTRANSLATE関数と同様に、Microsoftのクラウドベースの翻訳サービスが提供する言語検出機能を利用しています。そのため、TRANSLATE関数と組み合わせて使用することも想定されており、例えば、大量の多言語テキストデータが含まれる列について、まずDETECTLANGUAGE関数で各行の言語を特定し、その結果に基づいてTRANSLATE関数で特定の言語(例えば英語)に統一的に翻訳するといった、より高度なデータ処理フローを構築することができます。その他にも、顧客からの問い合わせメールやアンケートの自由記述回答など、様々な言語が混在する可能性のあるテキストデータを、言語別に自動的に分類・仕分けする際の前処理としても活用できます。
構文:
=DETECTLANGUAGE(text)
- text
- 言語を判別したいテキスト文字列、またはそのテキストが含まれるセル(またはセル範囲)を指定します。この引数は必須です。 12 通常は、単一のセルを参照してそのセルのテキストの言語を判定しますが、複数のセルからなる範囲を指定した場合の動作については、Excelの他の多くの関数が動的配列に対応していることを考慮すると、各セルの言語を判定した結果を配列として返す(スピルする)可能性があります。 107 ただし、言語検出の精度を高めるためには、ある程度の長さ(複数の単語や文で構成される程度)のテキストを入力として与える方が望ましいとされています。
使用例:
- 基本的な言語判定:
セルA1に “Bonjour tout le monde” というフランス語のテキストが入力されている場合、
=DETECTLANGUAGE(A1)
という数式は、”fr”(フランス語の言語コード)を返します。 110 同様に、セルA2に “Hello world” と入力されていれば結果は “en” となり、セルA3に “こんにちは世界” と入力されていれば “ja” が返されます。 - TRANSLATE関数との連携による多言語テキストの統一翻訳:
例えば、B列に様々な言語の文章が混在して入力されているとします。これらの文章を全て英語に翻訳してD列に表示したい場合、まずC列で各行の言語を検出し、その結果をTRANSLATE関数の翻訳元言語として利用する、といった使い方が可能です。
セルC2に:=DETECTLANGUAGE(B2)
(これでB2セルの言語コードがC2に表示されます)
セルD2に:=TRANSLATE(B2, C2, "en")
(これでB2セルの内容が、C2で検出された言語から英語に翻訳されます)
このように、DETECTLANGUAGE関数で一度言語コードを明示的に取得し、それをTRANSLATE関数のsource_language
引数に渡すことで、TRANSLATE関数に言語検出を直接任せるよりも、より確実性の高い翻訳元言語の指定が可能になります。 - 複数セル範囲に対する言語判定(動的配列としての利用可能性):
例えば、E1セルからE3セルの範囲に、それぞれ異なる言語の単語(例: E1: “Hola”, E2: “Guten Tag”, E3: “Ciao”)が入力されている場合、
=DETECTLANGUAGE(E1:E3)
と入力すると、結果はそれぞれの言語コードからなる3要素の配列(例えば、{"es"; "de"; "it"}
のような形)になり、隣接するセルにスピル表示されると考えられます。ただし、この複数セル範囲に対する詳細な動作仕様(特に、各セルを個別に判定するか、範囲全体を一つのテキストブロックとして判定するかなど)については、Microsoftの公式ドキュメントで明確に記載されていない場合もあるため、実際の挙動を確認することが推奨されます。
注意事項:
- DETECTLANGUAGE関数も、TRANSLATE関数と同様にMicrosoftのオンライン翻訳サービスを利用するため、インターネット接続とMicrosoftアカウントでのサインインが必須となります。
- 検出結果として返される言語コードは、通常ISO 639-1形式(2文字のコード、例: “en”, “ja”)ですが、言語の地域差(例えば、アメリカ英語 “en-US” とイギリス英語 “en-GB” など)までは通常区別されず、基本的には主要な言語単位での判定となります。そのため、例えば “color”(米)と “colour”(英)のような綴りの違いだけでは、どちらの地域の英語かを正確に判定することは難しいかもしれません。
- この関数の主な目的の一つは、TRANSLATE関数で
source_language
引数を省略した場合(自動言語検出)と同じ処理を、ユーザーが明示的にワークシート関数として実行し、その結果(検出された言語コード)を他の処理に利用できるようにすることにあります。
ユーザー評価・感想:
DETECTLANGUAGE関数は、TRANSLATE関数ほど派手な機能ではありませんが、「Excelがテキストの言語を理解し、それを情報として扱えるようになる」という点で、多くのユーザーから興味深い新機能として受け止められています。ユーザーコミュニティでは、「アンケートの自由回答やSNSのコメントなど、複数言語が混在する可能性のある大量のテキストデータセットを扱う際に、この関数を使えば言語別に自動で仕分けやタグ付けができるようになるかもしれない」とその利点を挙げる声が見られました。
また、「翻訳処理を行う前に、まず元のテキストが何語で書かれているのかをセルに表示して確認できるのは、エラーチェックの観点からも便利だ」といった実用的な意見もあります。特に、グローバル企業などで多国籍の従業員や顧客からのデータを扱う場合、言語ごとに異なる処理フローを適用したいケースがあり、DETECTLANGUAGE関数がその分岐処理のトリガーとして使えるのではないかと期待されています。実際、あるユーザーは「Excelを使って簡易的な言語検出システムを構築し、その検出結果に基づいて、特定の言語のテキストだけを翻訳する、あるいは翻訳せずにそのまま残す、といった条件分岐処理を、複雑なマクロを書かずに実現できるようになった」と述べ、プログラミングなしで国際化対応のワークフローを作成できるようになったことに感心していました。
一方で、TRANSLATE関数と同様に、「この機能も企業のセキュリティポリシーによっては、外部サービスへの通信が制限されて利用できない可能性がある」という懸念の声も聞かれます。 107 108 検出精度に関しては、Microsoftの言語検出テクノロジーは一般的に高い精度を持つことで知られているため、多くのユーザーは概ね信頼できる結果が得られると考えていますが、「”OK” や “No” のような非常に短い単語や、複数の言語で共通して使われる固有名詞などでは、誤検出の可能性もゼロではないので注意が必要だ」といった実践的な指摘もあります。例えば、「March」という単語が、英語の「3月」を意味するのか、それとも「行進」を意味するのかは文脈に依存するため、単語だけでは正確な言語判定が難しいケースも考えられます。
コミュニティでは、今後の機能拡張への要望として、DETECTLANGUAGE関数が言語を検出すると同時に、その信頼度スコア(確からしさ)も返してくれるオプションや、より詳細な言語情報(例えば、国コードや方言の区別など)を取得できるようになることへの期待も語られています。総じて、DETECTLANGUAGE関数は、「ニッチな機能かもしれないが、特定のニーズにおいては非常にユニークで有用な関数」という評価であり、特にTRANSLATE関数と組み合わせて使用することで、Excelの応用範囲をさらに広げることができる点が好評を得ています。
TRIMRANGE関数
概要:
TRIMRANGE関数は、指定したセル範囲または配列の周囲(先頭や末尾)にある、完全に空白の行や列を取り除き、データが実際に入力されている部分だけを抽出して返す新しい関数です。 13 14 この「取り除く(Trim)」操作の対象として、行方向と列方向それぞれについて、「前方(leading、つまり上側や左側)」の空白、「後方(trailing、つまり下側や右側)」の空白、あるいはその両方を選択して指定することができます。 111 結果として返されるのは、元の範囲から不要な空白行・列が除去された、よりコンパクトな範囲(または配列)となります。このTRIMRANGE関数の結果を他のExcel関数の引数としてネストして使用することで、「データが存在する部分だけ」を動的に参照するような処理が非常に簡単に行えるようになります。従来、Excelで可変長のデータ範囲(例えば、日々行数が変わるようなリスト)の最終行を自動的に検出したり、データが入力されている範囲だけを正確に参照したりするためには、OFFSET
関数やINDEX
関数、MATCH
関数、COUNTA
関数などを複雑に組み合わせて工夫する必要がありましたが、TRIMRANGE関数の登場により、これらの処理が格段にシンプルかつ直感的に記述できるようになりました。
構文:
=TRIMRANGE(range, [trim_rows], [trim_columns])
- range
- トリム(空白の除去)の対象となるセル範囲または配列を指定します。この引数は必須です。 112
- [trim_rows] (オプション)
- 行方向のトリム方法を数値で指定します。 111
- 0: 行方向のトリムは行いません。
- 1: 前方(上側)の空白行のみをトリム(削除)します。
- 2: 後方(下側)の空白行のみをトリム(削除)します。
- 3: 前方および後方(上下両側)の空白行を全てトリム(削除)します。これがデフォルト値です。 111
- [trim_columns] (オプション)
- 列方向のトリム方法を数値で指定します。指定方法は
trim_rows
と同様です (0 = トリムしない、1 = 左側の空白列を除去、2 = 右側の空白列を除去、3 = 左右両側の空白列を除去)。この引数を省略した場合も、デフォルト値は3(両側の空白列をトリム)となります。 111
trim_rows
引数とtrim_columns
引数の両方を省略した場合は、どちらもデフォルト値の3が適用されたと見なされ、指定した範囲の上下左右に連続して存在する空白の行や列があれば、それらが全て取り除かれます。 111 ここでいう「空白」とは、その行または列に含まれる全てのセルが空(何も入力されていない状態、または空文字列 “” が入力されている状態)であることを指します。データが実際に入力されているセル(数値、文字列、数式など)に突き当たったところで、トリム処理はその方向に対して停止します。
使用例:
- 範囲の両端にある空白行・列を除去(デフォルト動作):
例えば、セル範囲A1:C100の中にデータが入力されているが、そのデータの実際の入力範囲の上部(例えばA1:A3)に何行か空白行があり、下部(例えばA50:A100)にも何行か空白行が混ざってしまっているような場合を考えます。このような時、=TRIMRANGE(A1:C100)
という数式を記述するだけで、Excelは自動的にデータが入力されている最初の行から最後の行までの範囲(例えば、A4:C49のような範囲)に結果を切り詰めて返します。 13 14 このTRIMRANGE関数の結果を他の集計関数の引数として使用すれば、例えば
=SUM(TRIMRANGE(A1:C100))
のように記述することで、データが実際に存在する部分だけの合計値を簡単に計算することができます。 - 前方の空白列だけを除去して最新データ列から処理を開始:
B列から右方向(横方向)に、月次の売上データが並んでいるようなケースを考えます。ただし、年の初めからデータが揃っているわけではなく、例えば1月から3月までのデータはまだ入力されておらず空欄で、4月以降のデータから入力が始まっているとします。このような状況で、先頭の空欄の列を無視して、実際にデータが入力されている最初の列(この例では4月分のデータ列)から処理を開始したい場合、TRIMRANGE関数が役立ちます。例えば、セル範囲B2:Z2に各月の売上データ(所々に未入力の空欄セルも含む)が入力されているとすると、
=TRIMRANGE(B2:Z2, 0, 1)
と記述することで、trim_rows
に0(行はトリムしない)を、trim_columns
に1(左側の空白列のみトリム)を指定し、データ範囲の左側に連続する空白列だけを除外することができます。仮にB2セルからD2セルまでが空白で、E2セル以降にデータが入力されていれば、この数式の結果はE2:Z2の範囲に相当するデータ配列(またはその参照)になります。この結果の配列を他の計算に利用すれば、常に「最初のデータが入力されている月から最後のデータが入力されている月まで」を対象とした動的な計算が可能になります。 - 実用例 – 常に最新12ヶ月分のデータを合計する:
上記の月次売上データの例で、常に最新の12ヶ月分の売上データを合計したい、というようなニーズはよくあります。このような場合、TRIMRANGE関数と、Excel 365の新しい動的配列関数であるTAKE
関数を組み合わせることで、非常に簡潔に実現できます。 113 114
=SUM(TAKE(TRIMRANGE(B2:Z2, 0, 1), , -12))
この数式では、まずTRIMRANGE(B2:Z2, 0, 1)
で左側の不要な空白列を取り除き、データが存在する範囲だけに整形します。次に、TAKE(..., , -12)
の部分で、その整形された配列の中から末尾の12項目(つまり最新の12ヶ月分のデータ)だけを抽出します(TAKE関数の第3引数に負の数を指定すると末尾から指定個数を取得できます)。最後に、SUM
関数で抽出された12ヶ月分のデータを合計しています。この方法を使えば、元データの入力状況(新しい月のデータが追加されたり、古い月のデータが削除されたり)が変化しても、数式は自動的に常に直近12ヶ月の範囲を対象として計算を行う、非常に動的でメンテナンス性の高い仕組みを構築できます。 115 これは、「スピル範囲の中から最後のN個の要素を取り出す」という、Excelのデータ分析で頻出する定番の処理パターンであり、TRIMRANGE関数が導入される以前は、FILTER
関数やINDEX
関数とMATCH
関数、COUNTA
関数などを複雑に組み合わせて計算していた処理が、この新しい関数によって大幅に簡潔化されます。 - 名前付き範囲への応用による動的なグラフ作成など:
TRIMRANGE関数は、Excelの「名前の定義」機能と組み合わせて使用することも非常に有効です。例えば、シート上で動的に行数が増減する可能性のあるデータリストに対して、常にデータが入力されている範囲だけを参照する「名前付き範囲」を作成したい場合、以下のように定義できます。
名前:LatestData
参照範囲:=TRIMRANGE(Sheet1!$A:$A)
このように名前を定義しておけば、LatestData
という名前は、Sheet1のA列全体の中から、上下の空白行を自動的に取り除いた、実際にデータが存在する範囲だけを常に指し示すようになります。 116 この動的な名前付き範囲を、例えばグラフのデータソースとして指定すれば、元データの行数が増えたり減ったりしても、グラフの範囲が自動的に拡張または縮小される、といった非常に便利な使い方が可能になります。
ユーザー評価・感想:
TRIMRANGE関数は、一見すると地味な機能に見えるかもしれませんが、「まさに痒い所に手が届く」便利な関数として、多くのExcelユーザー、特に日々の業務でデータの整形や動的な範囲参照を多用する人々から非常に好評を得ています。Excel MVP(Most Valuable Professional)をはじめとする専門家たちも、自身のブログ記事やTips集でこの関数を積極的に取り上げ、「Excelにおける動的範囲処理の考え方を大きく変える可能性を秘めた、革命的な関数だ」と紹介しています。 117 118
従来のExcelでは、データの末尾にある空白行を無視して、実際にデータが入力されている範囲だけを正確に扱うためには、INDEX
関数とMATCH
関数をネストしたり、OFFSET
関数とCOUNTA
関数を組み合わせたりといった、やや複雑で理解しにくい数式を記述する必要がありました。しかし、TRIMRANGE関数の登場により、これらの処理がたった一つの関数で、しかも非常に直感的に実現できるようになった点は、大きなメリットとして認識されており、「これまでの複雑な配列数式を大幅に簡素化し、可読性を向上させるのに大きく寄与する」との声が多数上がっています。
特に、Excel 365で強化されたBYROW
関数やBYCOL
関数、そしてLAMBDA
関数といった高度な動的配列処理機能とTRIMRANGE関数を組み合わせることで、処理の途中で発生する可能性のある不要な空の要素(空白行や空白列)を効率的に取り除くことができるため、数式全体のパフォーマンスと見通しが大幅に改善される点が評価されています。 118 ユーザーコミュニティでは、具体的な使用例として、「行方向に可変長のデータ系列が複数存在する場合に、それぞれのデータ系列に対してTRIMRANGE関数を適用して不要な空白を整形し、その結果をVSTACK
関数などで縦方向に結合することで、データ間に不要なギャップを生じさせることなく綺麗に統合する」といった、より実践的なテクニックが共有されています。
また、ICAEW(英国勅許会計士協会)のExcel関連記事では、「TRIMRANGE関数と、Excel 365に新たに導入された、セル参照の末尾にドット(.
)を付けて特定のプロパティ(例えば、空白を除いた値など)にアクセスする“ドット演算子”(一部では “Trim Refs” とも呼ばれる実験的機能)のような新しいアプローチによるブランク(空白)除去の考え方」についても触れられており、Excelの動的配列機能の使い勝手が、これらの新機能によってさらに向上したことが強調されています。 119 120
一方で、より一般的なExcelユーザーからは、「AVERAGE
関数で平均値を計算する際に、範囲内の空白行を事前に除外しておくのに便利だ」「外部システムからCSV形式でインポートしたデータに含まれがちな、余分な空白行や列を簡単に消去するのに重宝する」といった、日常業務のちょっとした手間を省いてくれる実用的な機能としての声が多く上がっています。総じて、TRIMRANGE関数は、他の新関数ほど派手さはないものの、日々のExcel作業における細かなストレスを軽減し、よりスマートなデータハンドリングを可能にする優れたユーティリティ関数として、多くのユーザーに好意的に受け入れられており、「こういう細やかで実用的な改善こそが、本当にユーザーに歓迎される機能だ」との声も多く見られます。
最後に、本レポートで紹介した新関数群は、いずれもExcel 365のサブスクリプション契約者のみが利用可能であり、Excel 2024のような永続ライセンス版では提供されていない点にご注意ください。Microsoftは、これらの新機能をまずOffice Insiderプログラムの参加者や、Current Channel(最新チャネル)のユーザー向けにプレビュー版として展開し、フィードバックを収集しながら品質を高めた上で、その後、一般のExcel 365ユーザー向けに順次リリースしていくというプロセスを取っています。 35 本稿執筆時点(2025年5月)までにご紹介した関数は、概ね一般利用可能(GA: General Availability)なステータスとなっており、お使いのExcel 365を最新の状態にアップデートすることで利用できるようになるはずです。 35 122 123
ユーザーコミュニティでは、これらの新しい強力な関数群によって、「Excelのデータ分析能力や自動化の可能性が、かつてないレベルにまで飛躍的に向上した」との評価がされており、特に動的配列機能やLAMBDA関数といったExcel 365ならではの基盤技術との相乗効果(シナジー)が、今後の活用における大きな注目ポイントとなっています。Microsoftは今後もExcel 365に対して、さらなる関数の追加や既存機能の改善を継続的に行っていくことを予告しており 125、最新の情報を常にウォッチし続けることで、Excelをより効果的に活用し、日々の業務の生産性を一層高めることができるでしょう。
参考資料: 本レポート中の新関数の解説にあたっては、Microsoftの公式サポートドキュメントやTech Communityのブログ記事 1 2 4 6、およびその他の信頼できる技術情報サイトの記事などを本文中で適宜参照しています。各関数のより詳細な仕様や、さらに多くの使用例、注意点などについては、Microsoftの公式サポートページ(該当する情報源へのリンクを、必要に応じて本文中および末尾の出典リストに記載しています)にも豊富な情報が掲載されていますので、深く学習したい場合はそちらも併せてご参照ください。
コメント