
Microsoft Excelのフィルハンドルは、ほとんどのシリアルリストの要件に対応しており、ユーザーが最初に使い方を覚える機能の一つです。ここで言うシリアルとは、1、2、3、4といった連続した値のリストのことです。Microsoft Excelでは、これらのリストを「シリーズ」と呼びます。
参照: 誰もが知っておくべき Windows、Linux、Mac のコマンド (無料 PDF) (TechRepublic)
非常に強力ですが、必要なすべてのシリアルリストを処理できるわけではありません。例えば、各シリアル値がn回繰り返される連続リストが必要だとします。nが5の場合、リストは1、1、1、1、1、2、2、2、2、2、3、3、3、3、3、3、…となります。このチュートリアルでは、2つのシンプルなExcel関数、ROW()とROUNDUP()を組み合わせて、n個の連続した値を返す方法を紹介します。
私はWindows 10 64ビットシステムでMicrosoft 365を使用していますが、以前のバージョンもご利用いただけます。Web版Microsoft Excelは両方の機能をサポートしています。このExcelチュートリアルのデモ版.xlsファイルと.xlsxファイルをダウンロードできます。
ExcelでROW()とROUNDUP()を一緒に使う方法
ここで使用する式は、ExcelのROW()関数とROUNDUP()関数を組み合わせたものです。使用する前に、この2つの関数について少し学んでおきましょう。
ExcelのROW()関数は、参照の行番号を返します。ROW([reference])
参照は省略可能な構文を使用します。省略された場合、ROW()は現在のセルの行番号を返します。参照が縦方向の範囲の場合、ROW()は縦方向の配列で行番号を返します。例えば、C2に=ROW()を入力すると2が返されます。一方、ROW(D2:D5)は、図Aに示すように、列内の値2、3、4、5を返します。
図A

また、ExcelのROUND()関数も使用します。これは、値を0から遠い方に切り上げる関数です。この関数ROUND(number, num_digits)
では、Excelでは両方の引数が必要となる以下の構文を使用します。数値は任意の実数または数値参照にすることができます。
num_digits は、数値を丸めたい桁数です。例えば、図Bは、この関数が数値2を様々な小数点以下の値で切り上げる様子を示しています。num_digits 引数の値(この例では1)を変更することで、結果を変えることができます。
図B

num_digits が 1 であるため、ROUNDUP() は四捨五入の際に 1 桁の小数点を返します。num_digits が 2 の場合、この関数は 2 桁の小数点を返します。
これらの関数はどちらもシリアル値のリストをサポートしていないようですが、組み合わせるとまさにそれが実現されます。
Excelで連続した数字の一定数を返す方法
ROW() と ROUND() をいくつかの入力値と組み合わせることで、非常に柔軟な連番関数を作成できます。n で割るという方法は既に検討されていると思いますが、これは解決策の一部です。しかし、図 C に示すように、それだけではうまくいきません。この場合、n は 5 なので、1/5 は 0.20、2/5 は 0.40 となります。
図C

ここで ROUNDUP() の出番です。図 D は、単純な式 ROW()/n に ROUNDUP() を使用した結果を示しています。
図D

1行目の式を評価してみましょう。
=ROUNDUP(ROW()/5,0)
=ROUNDUP(1/5,0)
=ROUNDUP(0.2,0)
1
num_digit 引数 0 は整数のみを返し、切り上げられた .2 に最も近い整数は 1 です。1 行目から 5 行目も 1 を返します。次に、関数が 6 行目をどのように評価するかを見てみましょう。
=ROUNDUP(ROW()/5,0)
=ROUNDUP(6/5,0)
=ROUNDUP(1.2,0)
2
この式は要求通りに動作しますが、常に5つのシリアル値のセットを返すため、柔軟性が十分ではありません。幸いなことに、入力値を追加することでこれを修正できます。
Excelで入力値を追加して式をより柔軟にする方法
ここまでの式は、連続する整数を 5 個ずつ返していますが、この式を変更して n が実際に n になるようにしたい場合はどうすればよいでしょうか。入力値を追加すると、この式は柔軟になり、この要求に対応できるようになります。
図Eはシンプルな設定を示しています。C1はnの入力値です。C1が空白の場合、IFERROR()関数によって0除算エラーが隠蔽されるため、何も起こりません。この関数は必須ではありませんが、エラー値のリストを表示したくない場合もあるでしょう。これは任意です。
図E

C1に5を入力すると、E1:E10の式は=IFERROR(ROUNDUP(ROW()/$C$1,0),"")
先ほど見た1と2の2つのグループを返します。C1の値を2に変更すると、式は図Fに示すように5つのグループのリストを返します。nに1を入力すると、式は1、2、3、4…と返します。
図F

入力値は、正または負の任意の整数にすることができます。
これは n 個の連続した値のリストを取得できる唯一の方法ではありませんが、迅速かつ簡単です。