2021年8月27日時点の、32ビット版Excelで発生する現象を記事にしておきます。最近のExcelで使えるSEQUENCE(シークエンス)関数の第4引数に小数を指定して作成した小数の連続データは、オートフィルで作成した小数の連続データとは異なる件についてです。
SEQUENCE関数で-1.0から1.0まで0.1刻みの小数を出力する
「-1.0」から「1.0」まで、「0.1」刻みで小数の連続データを出力したときに、この現象に気が付きました。
A2セルに
=SEQUENCE(21, 1, -1, 0.1)
を入力したところ、下図のような状態になったのです。
「0」になって欲しいA12セルが指数表示になっています。
オートフィルした場合
ちなみに、B2セルに「-1」、B3セルに「-0.9」を入力して下方向にオートフィルした場合、B12セルにはもちろん「0」が表示されます。
比較してみると
念のためA列の値とB列の値を比較してみます。
C2セルに
=A2=B2
と比較演算を行う計算式を入力して下方向にオートフィルすると、下図のようにC12セルとC13セルに「FALSE」と表示されます。
「0」だけでなく、A13セルのSEQUENCE関数で作成した「0.1」も、オートフィルで作成したB13セルの「0.1」と異なるということです。
小数点以下の表示桁数を増やしてみると、下図のとおりです。
整数の連続データを割り算すればOK
もちろん整数の連続データを割り算して作成した小数の連続データは、オートフィルで作成した連続データと等しくなります。
=SEQUENCE(21,1,-10,1)
と入力した場合は、下図のとおり「-10」から「10」までの1刻みの連続データが作成できます。
この整数値を「10」で割り算する
=SEQUENCE(21,1,-10,1)/10
と入力すれば下図のような結果となります。
B列とD列の値を比較してみると、先ほどは「FALSE」となった「0」と「0.1」も、下図のとおり等しいと判定されます。
オートフィルが行っていること
この現象をオートフィル側に注目すると、人間がドラッグする間に、さまざまな処理を行っていることに驚かされます。
単純に2つの値の差を増分値にしているわけではないのですから。
最終更新日時:2021-08-28 05:26
Home » Excel(エクセル)の関数・数式の使い方 » SEQUENCE関数で小数の連続データを作成すると