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

重複するデータを上に詰めて表示さセル方法が解らないです。

B列はA列の元データから重複分は表示しないようにしています。
C列はA列の元データから重複分の数を数えています。

│A │B    │C│ D │
1│あああ │あああ │3│
2│いいい │いいい │2│
3│あああ │     │ │
4│ええ  │ ええ  │2│
5│おおお │おおお │1│
6│ええ  │   │ │
7│いいい │  │ │
8│あああ │  │ │
9│うううう│うううう│1│


上記のような表で、A列が元データで、

B列にはセルB1から、=IF(COUNTIF($A$1:A1,A1)>1,"",A1)という関数を
オートフィルで下まで伸ばしています。

C列は、=IF(COUNTIF($A$1:A1,A1)>1,"",COUNTIF($A$1:$A$100,A1))と
いう関数を使用しています。


そこで、B列C列の何も表示されていないセルを詰めて、上に詰めて
表示させたいです。マクロは良くわからないのでなるべく関数で
お願いします。ちなみに、今使用している関数も、こうしたほうが
いいというのがありましたら。訂正してもらえると助かります。

解りづらいところがありましたら、補足します。
宜しくお願いします。

A 回答 (3件)

B列にはセルB1から、=IF(COUNTIF($A$1:A1,A1)>1,"",A1)という関数を


オートフィルで下まで伸ばしています。
の部分の作業に2行使います。
B列は =IF(COUNTIF($A$1:A1,A1)>1,"",ROW(A1)) にして作業列にして使います。(必要なデータのみ その行番号を出しておきます)

C列に =INDEX($A$1:$A$100,SMALL($B$1:$B$100,ROW(A1)),1)
エラー処理入れると
=IF(ISERROR(SMALL($B$1:$B$100,ROW(A1))),"",INDEX($A$1:$A$100,SMALL($B$1:$B$100,ROW(A1)),1)
で大丈夫かと思います。

C列は、=IF(COUNTIF($A$1:A1,A1)>1,"",COUNTIF($A$1:$A$100,A1))と

D列に、=IF(C1="","",COUNTIF($A$1:$A$100,C1))
    • good
    • 0
この回答へのお礼

回答ありがとうございます。出来ました。

さらに式も直していただき、スマートになってとても感謝です!

お礼日時:2008/08/06 16:57

では、D1に


=IF(B1="","",COUNTA($B$1:B1)-COUNTBLANK($B$1:B1))
と入れて、下にオートフィル
E1に
=IF(ROW(E1)<=MAX($D$1:$D$100),INDEX(B$1:B$100,MATCH(ROW(E1),$D$1:$D$100,0)),"")
と入れて、下にオートフィル
E列をF列にオートフィル

これでB列C列のデータが上詰でE列とF列に表示されます。
D列がじゃまなら非表示にして下さい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
見事に思い通りのものができました。

お礼日時:2008/08/06 17:01

少なくともC列だけでもオートフィルタを設定して、「空白以外のセル」を選択、という方法ではだめですか?



別解ですが、普段このような場合には、別に行番号列を設け、「データの並べ替え」で空白行を取り除き、再度「行番号」で元の順にしています。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
説明不足ですいません。オートフィルタを使わない方法で出来ればと
思っています。宜しくお願いします。

お礼日時:2008/08/06 10:30

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