質問: excelで、自動でデータのナンバー付けをしたい エクセルで、商品管理をしているのですが、以下のようなエクセルファイルのデータをフィルタ後(件数が0より多いものでフィルタをかけた後)、項目のナンバーを再び1から順につけていきたいと思っています。 ------------------エクセルファイル------------------ 項目 商品名 商品id 単価 件数 金額 1 aaa bbb ¥2,000 1 ¥2,000 2 ccc ddd ¥1,200 19 ¥22,800 3 eee fff ¥1,000 0 ¥0 4 ggg hhh ¥1,000 3 ¥3,000 5 iii jjj ¥500 0 ¥0 6 kkk lll ¥400 2 ¥800 小計 ¥28,600 --------------------------------------------------- 上記のファイルを、件数が0より多いものでフィルタをかける。 つまり、エクセルファイルは、以下のようになります。 ------------------エクセルファイル------------------ 項目 商品名 商品id 単価 件数 金額 1 aaa bbb ¥2,000 1 ¥2,000 2 ccc ddd ¥1,200 19 ¥22,800 4 ggg hhh ¥1,000 3 ¥3,000 6 kkk lll ¥400 2 ¥800 小計 ¥28,600 --------------------------------------------------- この場合、項目のナンバーが1、2、4、6、という順番になっているので、 これを1、2、3、4、という順番に置き換えていきたいと思っています。 データ数が少なければ手動でやっても良いのですが、 データ数が膨大な量になるので、これを自動で出来るようにしたいと思っています。 vbaで挑戦を試みましたが、なかなか上手くいきませんでした。 何か上手くできる方法はございませんか? どなたかご教授をお願いします。
回答: 既存の項目データを消去しておいて フィルターをかけます。非表示には 番号がふられません。商品名 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