アプリ版:「スタンプのみでお礼する」機能のリリースについて

EXCEL: 非表示を含んだときの連番表示について
エクセル2010を利用して、ある数値に従って順位をつけたいのですが非表示行があるせいかうまくいきません。


◆問題再現
(1)フィルタを利用して不要な値の部分のチェックを外すため非表示行が発生する。
(2)ある列の値に従ってRANK関数を用いてみたが、非表示行も含めて選択するため、非表示行のランクを含めた順位が出てしまう。1,4,5,6,8,…のように出る。

◆自分なりの対応策
(1)SUBTOTALを利用して非表示行をスキップし、連番をつけることには成功。
=>しかし、フィルタでソートし直したときに、他の列の値と関連していないため固定(常に1, 2, 3, 4, とでる。)
(2)RANKを利用し順位がでる。
=>上述したとおり、非表示行も含めた順位の計算をしてしまう。


この問題に対処するのは無理なのでしょうか?
RANK関数で非表示行だけ選択(ALT+;のような)することができればいけそうですが、よく分からないです。
かなり分かりにくい質問となってしまいましたが、どうぞよろしくお願いします。

A 回答 (4件)

例えばA2セルから下方に連番があるとします。

また、別にB2セルから下方には何かの数値が入力されているとします。

例えばC2セルから下方にフィルタでソートしたあとの番号を1から連番で表示させるとしたらC2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(A2="","",SUBTOTAL(2,A$2:A2))
または次の式でもよいでしょう。
=IF(A2="","",SUBTOTAL(2,B$2:B2))

C列には表示されている行のみに連番が表示されます。
    • good
    • 1

No.2です!


前回の方法では合計だけの抽出になってしまいます。
オートフィルタをお使いだということは他の色々な条件でのフィルタも考えていらっしゃると思うので
多分希望通りにならないと思います。

という訳で前回の方法は無視してください。

何度も失礼しました。m(__)m
    • good
    • 1

こんばんは!


外していたり、参考にならなかったらごめんなさい。

オートフィルタではないのですが、別Sheetに表示する方法です。
どのような表か判らないので勝手にこちらで↓のように作ってみました。
↓の画像でSheet1のデータをSheet2のA2・B2セルに条件を入力すればそのデータを表示するようにしてみました。

Sheet1に作業用の列を設けています。
作業列I2セルに
=IF(COUNTBLANK(Sheet2!$A$2:$B$2),"",IF(AND(G2>=Sheet2!$A$2,G2<=Sheet2!$B$2),ROW(),""))
という数式をいれフィルハンドでダブルクリック、またはオートフィルで下へコピーします。

そして、Sheet2のA5セルに
=IF(COUNT(Sheet1!$I:$I)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$I:$I,ROW(A1))))
という数式をいれ、列方向にG5セルまでオートフィルでコピーします。
H5セルに
=IF(G5="","",RANK(G5,$G$5:$G$100))
(とりあえず、Sheet2の100行目まで表示されても対応できるようにしています。)
として、最後にA5~H5セルを範囲指定し、H5のフィルハンドルで下へコピーすると
画像のような感じになります。

この程度しか思いつきませんが
他に良い方法があれば読み流してくださいね。m(__)m
「EXCEL: 非表示を含んだときの連番表」の回答画像2
    • good
    • 0

順位を付けるセルが正の数値という仮定ですが...



[表示]といる列を作り、表示セルには1を、非表示セルには0を代入します。
[順位]という列を作り、[値]×[表示]の計算式を入力します。
[順位]セルに関してrank関数を設定します。
    • good
    • 0

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