English

Excelのオートフィル機能

Excelは自動的に上下左右のセルに書式、関数等を状況に応じた複製をする機能を持っています。図のようにセルを選択している場合は右下にフィルハンドルと呼ばれるが表示されます。行や列を選択すれば表示位置が変わります。 フィルハンドルにマウスポインターを近づけると「」マークに変わります。この状態でマウスをドラッグするわけです。右図で右ドラッグすると同じ列幅に設定出来ます。

図1.

☆1つのセルを選択している場合

図2.

セル内容がマウスのドラッグ方向にコピーされます。 『第1号』などのように数字を含んだデータや数式が入力されている場合、また「設定リスト」の語句がある場合には自動的に順次変更されます。掃除当番など順番が決まっている場合、最下行のようにユーザー設定する事も出来ます。 ユーザー設定リストの作成

(注)一時的な順序であり汎用性がない場合は、『 佐藤、郷田、谷川…高橋 』 とセルに直接入力しこれらのセル全て ( この場合7つ )を選択したうえでオートフィルする方が簡単です。

☆2つのセルを選択している場合

図3.

図3.のように 1,2 の2つのセルをオートフィルすると 1,2,3,… の連番が出来ます。一方 1,3 の場合は 1,3,5,7… の奇数の数列になります。

(参考)右図の場合も 1,2,3,… の連番が出来ますが1行目に他のデータがあるとそれもコピーされます。

☆4つのセルを選択している場合

図4.

ドラッグは右と下の同時適用はできません。(下にドラッグして、一旦マウスを放した後右へ、あるいは右にドラッグした後下にします。)

例の(A)の場合、下方向には7加算、右方向は順列、つまりカレンダー形式が出来上がります。範囲によっては要らない(存在しない)日も表示されます。

一方、(B)の場合では九九の掛け算表になります。 この場合も九×九の外側の部分は不要部分になります。ちなみに、英米では掛け算表は 12 × 12 まであるようです。

☆5つ以上の場合

数字データの場合だとよく分かりません。

☆行、列のオートフィル

図5.

行を選んだ場合のフィルハンドルの位置は図5.のようになります。

タイトル行を除く範囲を選んでフィルハンドルをドラッグすると、書式(罫線、色、フォントなど)がそのまま引き継がれ、数字番号やセル幅についても変更してくれるので便利です。特に罫線など書式が複雑な場合には重宝です。

図6.

操作後、下部に表示されるオートフィル オプションで、「日単位」、「月単位」などを変更できます。

セル上に図がある場合もコピーできますがなぜか三項目以降には貼り付けられません。

c4 〜 c6 セルを選ぶか、c7 〜 c9 セルを選んで右下のフィルハンドルをドラッグすればフィル範囲に図が入ります。

☆オートフィルの応用例

いろいろな規則性のある数値の埋め方を示します。上の図はセルの選択範囲、下図はオートフィル結果です

図7.

例 A.1,□,2,□,3,□ … 1行おき空白セル
A列のように A1, A2 セルを選んで、下方にマウスドラッグします。範囲が広い場合でイミディエイトを使うなら

[a1:a2].autofill destination:=[a1:a1000]

例 B.3,□,6,□,9,□ … 2行ごとに3の倍数
B列のように B1 〜 B4 セルを選んで、下方にマウスドラッグします。
例 C.1,2,□,□,3,4,□,□ … 2行ごとに空白セル2つ
C列のように C1 〜 C4 セルを選んで、下方にマウスドラッグします。
例 D.1,2,3,□,4,5,6,□,… 4行目毎に空白セル
D列のように D1 〜 D4 セルを選んで、下方にマウスドラッグします。
例 E.1,1,2,2,3,3,…2つごとの順列
E列のように E1, E2 セルを空白にして E3 セルに 『 =e1+1 』 と入力し E3 セルを下方にマウスドラッグします。数式が入力されているのでコピー操作もOKです。広範囲へのコピー操作で貼り付けるのが簡単です。… ここの図では数式を示しています。(以下の項目も同様)

マウスドラッグ(または、コピー操作を)した後にそのまゝで Ctrl + C, Ctrl + V を連続操作して 「 貼り付けのオプション 」 で 「 値のみ 」にしておくのがよいです。「 値のみ 」 にすればセルの移動などが出来るようになります。

例 F.1,1,1,2,2,2,3,3,3…3つごとの順列
F列のように F1 〜 F3 セルを空白にして F4 セルに 『 =f1+1 』 と入力し F4 セルを下方にマウスドラッグします。
例 G.1,2,4,5,7…3の倍数を除いた連番
G列のように G1 〜 G4 セルにそれぞれ 『 1 』,『 2 』,『 =g1+3 』, 『 =g2+3 』 と入力し G3, G4 セルを選択しマウスドラッグします。コピー操作も出来ますが2つのセルを選択しているので貼り付け先範囲を偶数にしなければ失敗します。

 のように例 A. 〜 例 D. では、数値に代えてユーザー設定リスト(上記参照)内の組み込みの連続データなど (子,丑,寅,… 日, 月, 火,… ) も扱うことが出来ます。

オートフィル(補足)

このような数値の埋め込みは行数が相当ある場合に必要な事が多いです。しかし、マウスドラッグだと1000行ぐらいになると大変です。 埋め込み数の多い場合、マウスドラッグに替えて Excel2003 では 「 編集 」 → 「 フィル 」 → 「 連続データの作成 」で、2007 では 「 ホーム 」 → 「 フィル 」 → 「 連続データの作成 」で、操作するのが便利ですがここで提示した特殊な数列については想定外でサポートをしていないように思われます。ここではオートフィルに替え汎用性ある関数を使って数列の作成法を示します。

3の倍数を除いた数列を埋める

図8.

予め a1 セルは 1 と入力しておきます。

a2 セルに

=if(mod(a1+1,3)=0,a1+2,a1+1)

と入力します。

必要な行数にコピー またはマウスドラッグで数列を埋めます。

を 5 に変えれば、5 の倍数を除いた数列が埋まります。

4行目ごとに空白セルを作る

c1 セルに 1 を入力しておきます。 c2 セルに

=if(c1="",offset(c1,-1,0)+1,if(mod(row(),4)=0,"",c1+1))

とタイプします。

(注) c1 セルには予め数値( 1 でなくても良い)を入力していないとエラーになります。また、の数字を 6 にすると 5つごとに空白セルが入ります。 row() は 入力されているセルの行番号が返されます。他の関数は末尾に抜粋します。

いずれにせよ、マウスドラッグ(または、コピー操作を)してハイライト表示させたまゝで Ctrl + C, Ctrl + V を続けて操作し、「 貼り付けのオプション 」 で 「 値のみ 」にしておくのがよいです。「 値のみ 」 にすればセルの移動などが出来るようになります。

例 1. 1行おきに行全体を削除する

関連ページ 一定間隔毎の行削除

図9.

まず、「 1行おきに空白のある数列 」(図9.)を作ります。 それには図7.の 例 A でもよいのですが 数式でコピーする方法を使ってみます。 上の式で 4 を 2 に置き換えた次式

=if(c1="",offset(c1,-1,0)+1,if(mod(row(),2)=0,"",c1+1))

これを c2 セルに貼り付けて下方にコピーすれば1行おきに空白セルのある数列が埋まります。( c1 セルに数値がないとエラーになります。) データが含まれるワークシートを用意し、 a 列を新たに挿入作成して、この数列 (数値のみに変換しておくこと) をコピーして埋めます。

(注)空白セルの行が削除の対象となります。表題、見出し、タイトルなど削除したくない行には 1 を埋めた上で、その下にコピーすれば良いです。

データの並べ替え*で 「 最優先されるキー 」 で a 列を指定し 「 昇順 」 にすれば削除される行が下部に移ります。下部のデータを行全体削除すれば目的が達成できます。

*データの並べ替え… Excel2003, 2007 共 「 データ 」 → 「 並べ替え 」

任意の行間隔ごとの場合も同様にできます。 (ランダム行おきの削除の場合は 例 3.参照) 並べ替えに失敗してもでやり直しできるので安心です。

例 2. 1,1,2,2,4,4,……と埋める(3の倍数は除く)

図10.

a1 〜 a2 セルを空白セルにしたまゝで、

「 =if(mod(a1+1,3)=0,a1+2,a1+1) 」 の書式を a3 セルにコピーします。

このセルのフィルハンドルを下方にマウスドラッグ(または、コピー操作)します。 同様に、a1 〜 a3 セルを空白セルにして a4 セルに貼り付けると 1,1,1,2,2,2,4,4,4,…のようになります。 「 =if(mod(a1+1,3)=0,a1+2,a1+1) 」 の3を異なる数字に変えればその数の倍数は除かれます。

例 3. 無作為に概ね2割程度の行を削除する

=if(c1="",offset(c1,-1,0)+1,if(rand()<0.2,"",c1+1))

上の式を c2 セルに貼り付けた後、例 1.と同様に並べ替えを利用します。( c1 セルが空白だとエラーになります)

RAND 関数は 0 以上 1 未満の乱数を返すので 0.2 ではだいたい2割程度になるはずですが実際には空白セルが2行続かない設定なので該当セルはかなり少なくなります。最大の設定でも50%止まりです。(例 1.と同じ結果)

ここで、使った関数は if 関数、mod 関数、offset 関数、rand 関数です。

☆参考までに「 Microsoft Office Excel ヘルプ 」から抜粋します。

IF 関数… IF(論理式, [真の場合], [偽の場合]) 

MOD(数値,除数)…数値を除算したときの剰余を返します。

RAND 関数… RAND() 0 以上 1 未満の乱数を返します。

OFFSET 関数…OFFSET(基準,行数,列数,高さ,幅) 指定された行数と列数だけシフトした位置にあるセルまたはセル範囲への参照 (オフセット参照) を返します。

たとえば、=OFFSET(C3,2,3,1,2) では F5:G5 を返します。

このページの例では 高さ,幅 は省略しています。

このサイトで扱った項目