- ベストアンサー
エクセデータを関数でグループにしたい。
以下のように縦にならんだ文字数字を AB11 AB11 SG22 SG22 D765 D765 AB11 AB11 SG33 SG33 SG22 AB11 グループ化して以下のように並べたいです。 AB11 SG22 D765 SG33 また入力される文字は自動で入力され文字数字数は8文字までですがどのような数字が入力されるかは決まりがありません。 このようにできる関数はありますか? VBAではこのような事が出来る方法を探しましたが分けあって関数で行いたいと思ってます。 よろしくお願いします!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
データーの左列に作業領域が必要ですが データーがB1:B12にあるとして A1セルに =(COUNTIF($B$1:B1,B1)=1)*ROW() 下方向コピー C1セルに =VLOOKUP(SMALL($A$1:$A$12,COUNTIF($A$1:$A$12,0)+ROW()),$A$1:$B$12,2,0) 下方向コピー エラー処理はしていません。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >VBAではこのような事が出来る方法を探しましたが分けあって関数で行いたいと思ってます。 通常は、フィルタオプションでするかと思います。 関数なら、このようにしたら、どうでしょうか? 範囲に対しては、置換で変更してください。手動でするとミスが多くなります。しかし、ROWの中は、インクリメンタル数(1から増加する数)を取るためですから、必ず、A1 からでないといけません。 =IF(ROW(A1)>SUMPRODUCT((MATCH($A$1:$A$12,$A$1:$A$12,0)=ROW($A$1:$A$12))*1),"",INDEX($A$1:$A$12,SMALL(INDEX((MATCH($A$1:$A$12,$A$1:$A$12,0)=ROW($A$1:$A$12))*ROW($A$1:$A$12),,),ROWS($A$1:$A$12)-SUMPRODUCT((MATCH($A$1:$A$12,$A$1:$A$12,0)=ROW($A$1:$A$12))*1)+ROW(A1)),))
お礼
ありがとうございました。 探していたものと答えはピッタリでした。 ただインクリメンタル数のところが難点でした。 ありがとうございました。
お礼
思い切って質問してよかったです。 こんな方法があるんですね。 探していた答えでした。 ありがとうございます。