グッドデザイン賞を受賞したウォーターサーバー >>

オートフィルタのデータに連番をつける時。

オートフィルタで抽出したデータに連番をつける時は、
subtotal関数を使う方法しかないのでしょうか?
これが一番簡単な方法なのでしょうか?

エクセル2007には ‘アウトライン’という機能がありますが、
これを使えば連番をだすことはできるのでしょうか?
挑戦してみたのですが、私にはできませんでした。

エクセル2003・2007においてsuubtotal関数以外で
方法があれば教えてください。
どうぞ宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

>suubtotal関数以外


抽出された状態で
空白列で、抽出データ行の先頭セルに、
=MAX($A$1:A1)+1
このセルを下方にコピー

マクロの例
セル範囲は実状に合わせて書き換えてください。
抽出された状態で実行

Dim rng As Range
Dim c As Range
Dim i As Long

Set rng = Range("A2:A16").SpecialCells(xlCellTypeVisible)
For Each c In rng
i = i + 1
c.Value = i
Next
    • good
    • 0
この回答へのお礼

マクロの勉強をします。ありがとうございます!

お礼日時:2010/04/27 11:23

回答No2です。


B2セルへの入力の式は次のように変更してください。

=IF(A2="AA",COUNTIF(A$2:A2,"AA"),"")
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2010/04/27 11:24

連番はSUBTOTAL関数を使われるのがよいでしょう。

他の機能を使うにしてもドラッグ操作が入らずに連番を付けることはオートフィルタをしない場合でも無理でしょう。
どうしてそのような質問をされたのか分からないのですが、SUBTOTAL関数で付けた番号はオートフィルタを解除すれば別の番号に変わってしまいますね。使われている表の中でオートフィルタを解除しても変わらない番号を付けたいのでしたら、SUBTOTAL関数では対応できませんね。別の式を使うことになります。
例えばA1セルに項目名があり、その中でフィルタの際に抽出したAAの文字を対象として番号を付けるとしたらB2セルには次のような式を入力して下方にオートフィルドラッグします。

=IF(A2="","",COUNTIF(A$2:A2,"AA"))
    • good
    • 0

>オートフィルタで抽出したデータに連番をつける


>subtotal関数を使う方法

イメージがよく分からないのですが

A列にデーターが存在する場合B列に連番を表示するには
A2セルからデーターが始まるとして、B2セルに
=SUBTOTAL(103,$A$2:$A2)
と入力し下方向にフィル

こんな感じなのでしょうかね?

こんな感じを意味するのであれば
関数の組み合わせで様々な実現方法はあると思いますが、suubtotal関数を利用するのが一番単純化できると思います
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2010/04/27 11:23

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelでフィルタをかけた状態でオートフィルタで連番を振りたい

Excelでオートフィルタを設定し、抽出したデータがあります。(ですので表示範囲があります)その抽出したデータのある列に連番を振りたいのですが、非表示ににゅうりょくされてしまうためうまくできません。
またオートフィルタで抽出した範囲の可視セルをコピーすることはできても、再度貼り付けることもうまくできません。
何か方法はないでしょうか。

Aベストアンサー

質問を絞って頂けると回答しやすいのですが。

とりあえず ひとつ目に関しては B列にデータがあって A列
に連番を振りたい場合 先頭行(例えば B2セル)に

=SUBTOTAL(2,B$2:B2)
下方向にオートフィルコピー

で問題ないかと思います。

Qエクセル2010の技

エクセル2010です。フィルタをかけて抽出したセル(行)だけに、連番をふりたいのですが、うまくいきません。どなたかやり方をご教示ください。

Aベストアンサー

たとえばA列(A2セル以下)に連番を振りたいなら、A2セルに以下の数式を入力し下方向にオートフィルコピーしてください。

=SUBTOTAL(3,$B$2:B2)

このような関数を設定しておけば、自動的にフィルタされたデータで連番を表示することができます。

Qオートフィルタ抽出データに連番をつけるマクロ

オートフィルタで抽出したデータに連番をふりたいと思っています。このサイトで調べた結果、オートフィルタをかけてのオートフィルでの連番入力はできないと知りました。
現在しようとしているのは
  A  B  C
1 クラス NO 氏名  
2 1    ○△
3 2    □×
4 1    ★♪
というデータがあり、項目にオートフィルタをかけている状態です。クラスを抽出した場合にそのクラスでの通し番号(連番)を付けたいのです。SUBTOTAL関数だと、連番が表示されるのはオートフィルタで抽出している間だけです。SUBTOTALでつけられた連番を、オートフィルタを解除しても残しておくにはどうしたらよいでしょうか。やはりコピー&ペーストしかないのでしょうか?似たような質問が多々ありますが、コピー&ペースト以外の方法をご存知の方、どうか教えて下さい。

Aベストアンサー

#01です
>したがってオートフィルタで抽出を解除すれば同じ通し番号がクラス数分あることになります。
これは最初から書いていただきたかったですが(^^;、それならこのようなマクロでもできます。なお#02さんのご指摘のようにSpecialCellsを用いる方が処理が速くなりますが、手抜きして元のマクロを修正するにとどめます。

Sub Macro4()
Dim idx, cnt As Long
Application.ScreenUpdating = False
For idx = 2 To Range("A65536").End(xlUp).Row
  If Rows(idx).Hidden = False Then
    cnt = cnt + 1
    Cells(idx, "B").Value = cnt
  End If
Next idx
Application.ScreenUpdating = True
End Sub

Qオートフィルタで抽出した行にだけ連番を振りたい

500件程度の製品データに対して、製品1、製品2、製品3でフィルタ抽出後、製品1に該当する行にだけ、1~連番を振りたいのですが・・・普通に連番コピーしますと、隠れている製品2・3のセルを含めた状態で、連番が振られてしまいます。
これを回避する操作法はないのでしょうか?
例えば、ツールメニューや書式設定メニューから、「可視セルにのみ連番コピーする」などと、指定しておく事は出来ないのでしょうか?

Aベストアンサー

#2 の回答の補足に対して。
こんにちは。

関数不可というところで、これを付け足すのはやぶへびかもしれませんが、Excel2003 のヘルプより引用しておきます。

# SUBTOTAL 関数では、集計方法の値にかかわらず、フィルタの結果に含まれていない行はすべて無視されます。

これは、旧バージョンでも、同じ仕様です。

# 集計方法として 101 111 の定数を指定すると、[書式] メニューの [行] の [表示しない] コマンドで非表示にされている行は無視されます。リストで表示されている行だけを集計する場合は、これらの定数を使用します。

バージョンによって引数が変わることはありません。定数を、100番台で行うか、通常の1桁で行うか、こういう話は、問題外かもしれませんが、何か初歩的な思い込みによる問題であれば、これで解決するはずです。しかし、もしもExcelのバグのようなものが存在するなら、#3で解決するはずです。マクロの解決もやぶさかではないのですが、それは、逆に物事が複雑になるだけだと思います。

Qエクセルで、頭に0をつけて数字の桁を揃える方法

エクセルで、必ず5桁の数字を入れる列があるとします。
ところが、数値データとして最初に作っているので、0が頭になく桁が足りない場合があります。
任意文字として5桁の数字にしたいのですが、

何かいい方法はありませんでしょうか?

例)
A列 A列
50      00050
1000  ⇒  01000
11111    11111

どうぞよろしくお願いいたします。

Aベストアンサー

次の方法は如何でしょうか。
(1)表示だけで良いのならば、セルの書式設定→表示形式→ユーザ定義で00000を設定
(2)データとして必要ならば、空き列(仮にB列)B1に=TEXT(A1,"00000")を入力、下方向にコピー→B列をコピー→A列に形式を選択して貼り付けで「値」を選択→OK、B列を削除

Qフィルタしたセルのコピーをフィルタしたセルに貼付

質問番号:2467654で似たようなことを希望した方がいて、

【フィルタしたセルをコピーし、別シートのフィルタしたセルに貼り付けたいのですが、
別シートに貼り付けた時見えなくなっているセルにもコピーデータが張り付いてしまいます。】


という質問に対してベストアンサーが

【Ctrlキーを使用すれば、できますよ。
(例)
Aシートのコピーしたい部分を選択し、Ctrl+右クリックショートカットからコピーをクリックします。
Bシートの貼り付けたい部分にカーソルを持っていき、Ctrl+貼付…】

となっていて「できました」!といわれているのですができません。
これ本当にできますか?

違う部分も取り込んでしまうのですが…
フィルタをかけているのが他の列だとできないのでしょうか。

(例)
A B C ←列
あ 1 イ
い 2 ロ
う 3 ハ
え 4 ニ
お 5 ホ

の場合に、フィルタで あ うの行を選んで 1 3 を D列にペーストし、
あ1イ1 や う3ハ3 をつくりたい場合に あ1イ1は良いですが、い2ロ3 ができてしまうのです。



ちなみに以下のような回答もありましたが、これも「フィルタしたセルに貼り付け」はできませんでした。。
バージョンはエクセル2003です。

可視セルを選択してから、「コピー」→「貼り付け」を行うと、可視セルだけが貼り付けされます。

以下は、その手順です。
1) コピーするセル範囲を選択します。
2) 「編集」→「ジャンプ」→「セル選択」をクリックします。
3) 表示される画面で、「可視セル」にチェックを入れ「OK」を押します。可視セルだけが選択されます。
4) その後、コピーから貼り付けで、可視セルだけが貼り付けされます。
http://office.microsoft.com/ja-jp/assistance/HP052014731041.aspx

セルの選択コマンドから操作する方法もあります。
http://www.h3.dion.ne.jp/~fukusima/waza/ura124.html

参考URL:http://office.microsoft.com/ja-jp/assistance/HP052014731041.aspx,http://www.h3.dion.ne.jp/~fukusima/waza/ura124.html

質問番号:2467654で似たようなことを希望した方がいて、

【フィルタしたセルをコピーし、別シートのフィルタしたセルに貼り付けたいのですが、
別シートに貼り付けた時見えなくなっているセルにもコピーデータが張り付いてしまいます。】


という質問に対してベストアンサーが

【Ctrlキーを使用すれば、できますよ。
(例)
Aシートのコピーしたい部分を選択し、Ctrl+右クリックショートカットからコピーをクリックします。
Bシートの貼り付けたい部分にカーソルを持っていき、Ctrl+貼付…】

となって...続きを読む

Aベストアンサー

フィルタしたセルのコピー貼り付けに関しては、リンクで紹介されているものを含めて不正確な情報が多いように思います。

基本的に、フィルタしたデータは、非表示にしたデータと異なり、選択範囲の行のみクリップボードにコピーされます(すなわち、Ctrlキーを押しながら、縦にとびとびにセルを選択した状態と同じわけです)。

一般に、とびとびの行を選択してコピーしたセルを貼り付けると、行が詰められて貼り付けられます。
したがって、フィルタモードの場合はジャンプダイアログから可視セルを選択しないでも(まったくこの操作の必要はありません)、無条件に可視セルが貼り付けられます。

一方、フィルタモードではなく、行を非表示にしたシートでは、セル範囲を選択すると、可視セル以外のセルも選択されるので、可視セルだけを貼り付けたい場合は、ジャンプから可視セルを選択する必要があるわけです。

これらのクリップボードのデータをフィルタしたシートに貼り付けるときは、とびとびではなく一塊のデータとして貼り付けられるので、モードにかかわらず、必ず非表示セルにも貼り付けられます(すなわち、とびとびのセルに貼り付ける方法はありません)。

一方、フィルタモードでオートフィル操作を行うと通常とは異なり、連続データは入力できず(コピーのみ)、さらに表示セルだけを対象とします。

これを利用すれば、フィルタした行だけに同じ値を入力することができます。

例えば、フィルタした状態であるセルにデータを入力し、下方向にオートフィルすれば、その値が表示セルだけに「コピー」されます(非表示行にはデータが入力されません)。

例示のデータのように、フィルタしたB列のデータをD列に入力したい場合は、C列を非表示にしてから(列が飛んでいるとオートフィルができないため)、B列のフィルタされたセルを選択して、右方向にオートフィルしてください。

これでC列を再表示して、フィルタモードを解除すればフィルタされたデータだけにデータをコピーすることができます(オートフィル操作ができない別シートには適用できません)。

フィルタしたセルのコピー貼り付けに関しては、リンクで紹介されているものを含めて不正確な情報が多いように思います。

基本的に、フィルタしたデータは、非表示にしたデータと異なり、選択範囲の行のみクリップボードにコピーされます(すなわち、Ctrlキーを押しながら、縦にとびとびにセルを選択した状態と同じわけです)。

一般に、とびとびの行を選択してコピーしたセルを貼り付けると、行が詰められて貼り付けられます。
したがって、フィルタモードの場合はジャンプダイアログから可視セルを選択しないで...続きを読む

Qエクセルでフィルタ後の条件付き個数のカウント

いつもお世話になっております。

エクセル(2007)で作成した表をフィルタ後に条件に合致する個数をカウントする方法を教えてください。
(例)
A列:名前
B列:出身県のデータがあったとします。

名前でフィルタをかけた後、出身県ごとのカウントを行いたいのですが、条件が無い場合のデータ個数はSUBTOTAL関数を使えばOKなのはわかります。
COUNTIFS関数を使うと、フィルタで隠れた行のデータまでカウントしていまいます。

ピボットを使う(使い方がイマイチわかりませんが・・・)という方法もあると思いますが、今回は同一シート無いに関数でカウントしたいのです。

どなたかよろしくお願いいたします。

Aベストアンサー

=subtotal(3,a2:a3000)
あるいは
=subtotal(3,b2:b3000)
あるいは他の列

※空白セルは個数にカウントされないことに注意して、任意の列を選択

といった数式を、「フィルタで絞り込んだ際に非表示にならない位置」(表の最上行より上とか、最下行より下とか、別シートとか)に記入。その後、A 列で絞り込み、同時に B 列でも絞り込み。つまり、2 列で絞り込み。

以上により、A 列と B 列の AND 条件における個数が数式を記入したセルに表示されているはず。


>ピボットを使う(使い方がイマイチわかりませんが・・・)……

慣れ。やってみれば、意外とできます。たくさん使ってみてください。

Q【エクセル】1列内に複数ある同項目を、各項目一つずつに絞る方法

お世話になります。

アクセスで各商品コードごとに、「各施設の価格一覧」
集計をとるための下準備(各コード、重複なく一つずつに
絞られたテーブルを作りたいです)として、
エクセルシート内で無秩序に複数ある各商品コードから、
それぞれ一つずつだけ列挙されたシートを作りたいです。

1万行を超えているので、「集計」でまとめても
意味がないだろうし、この場合の対応策について
皆目思い浮かばないのですが、
よろしければアドバイスいただけないでしょうか。

よろしくお願い致します。

Aベストアンサー

こんばんは。

Accessを使うのも結構なのですが、Excelでは、フィルタオプションを使います。

メニューから
[データ]-[フィルタ]-[フィルタオプションの設定]

 指定した範囲(O)
 リスト範囲(L) に範囲を入力
 抽出範囲は、適当に1つのセルを選択し、

 □重複するレコードは無視する(R)にチェック

 OK

で、ユニーク・データが取れます。

これは、ユニーク・データを取るためのExcelのデータベース機能です。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q行に連番をつけたいのですが、空白セルには番号をつけないようにしたい。

A  B
1  10
2  20
   (空白)
3   25

B列のセルに数値の入力があった場合に、A列にナンバーを連番でつけていきたいのですが、できますでしょうか?

よろしくお願いします。

Aベストアンサー

#2です。
4行目「A4以下はA2をコピーする」は「A4以下はA3をコピーする」の間違いです。
たびたびすいません。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング