- ベストアンサー
Excelでデータのナンバー付けを自動化する方法
- エクセルで商品管理をしている場合、データのフィルタリング後に項目のナンバーを再び1から順に付けていきたいと思うことがあります。手動では大量のデータに対応するのが困難な場合、自動化する方法を探しています。これをVBAで試みましたが、上手くいきません。エクセルでデータのナンバー付けを自動化する方法があれば、教えてください。
- エクセルで商品管理をしている場合、フィルタリングしたデータの項目を再びナンバリングしたいことがあります。手動でナンバリングするのは大変な作業であり、自動化を望んでいます。VBAを使用して試みましたが、上手くいきませんでした。エクセルでデータのナンバー付けを自動化できる方法があれば教えてください。
- エクセルで商品管理をしている場合、フィルタリングしたデータの項目に再びナンバーを付けたいと思っています。しかし、手動で行うのは時間がかかるため、自動化したいと考えています。VBAで試みましたが、思うように動作しませんでした。エクセルでデータのナンバー付けを自動化する方法があれば教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
A列を再ナンバリング時の「項目_再」として 1行目は空白行にして貰って、2行目に列名があるとして、 A3から =if(F3=0,0,if(A2="項目_再",1,if(A2=0,max(A$2:A2)+1,A2+1))) てな感じでどうでしょう。 フィルタ掛ければ、「項目_再」列が0の行は見えないし。
その他の回答 (5)
- layy
- ベストアンサー率23% (292/1222)
基本的には発生したデータ値は変更しないものです。 何件かを知りたいがためなら「項目」列は残すべき、他の列やセルで「明細番号」として管理やら関数利用、と思います。連番付けた後、3行の扱いはどうするのか知りませんが、3行目の3、4行目の3は意味が変わります。 「件数」が変わることはないと思いますが、誤入力で0が0でなくなったらどうするのか。 外部からこの明細データをインポートしているならそこで連番付与させるとか、 どうなのでしょうか。 大丈夫でしょうか。
- yy_kd
- ベストアンサー率25% (5/20)
既存の項目データを消去しておいて フィルターをかけます。非表示には 番号がふられません。商品名 C列に データがある間、実行されます。 マクロで 下記を実行 sub renumber() y=3 C=1 while cells(y,"C")>"" If Rows(Y).Hidden = False Then cells(y,"B")=C c=c+1 endif y=y+1 wend end sub
お礼
回答ありがとうございます! 確かに、非表示のものには番号がふられませんでした! If Rows(Y).Hidden = False Then で、非表示を確認してるのですかね?? 色々と勉強になります^^ ありがとうございました。
- kagakusuki
- ベストアンサー率51% (2610/5101)
以下の方法では駄目なのでしょうか? まず、B3セルに次の数式を入力した上で、B3セルをコピーしてB4以下に貼り付けておきます。 =IF(C3="","",ROW()-ROW(B$2)) そして、フィルタを使用して、件数が0の行を抽出して、削除する。
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No2です。お示しの表でしたらB3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(C3="","",SUBTOTAL(3,C$3:C3)) G10セルには次の式を入力します。 =SUBTOTAL(9,G3:G9)
- KURUMITO
- ベストアンサー率42% (1835/4283)
フィルタなどの操作を行った後で表示されているデータのついてデータの数を求めたり、合計の金額を求めたりするための関数としてSUBTOTAL関数があります。 ご質問の場合には例えばA2セルには次の式を入力して下方にオートフィルドラッグすればよいでしょう。 =IF(B2="","",SUBTOTAL(3,B$2:B2)) また、合計金額についても今回は件数が0でないデータの合計ですから問題はありませんが件数が10件以上の金額となればフィルタ操作の後の合計金額は今のままではできませんが次のような式にすればできるようになります。 =SUBTOTAL(9,F1:F7)
お礼
回答ありがとうございました! みなさんの回答を全て試しましたが、kunpooさんのやり方が一番理解しやすかったので、 kunpooさんの回答をベストアンサーにしたいと思います! ありがとうございました!