- ベストアンサー
エクセルでデータをシート別に分けたい方法
- エクセルで入荷商品をシート別に分ける方法について教えてください。
- 入力した商品番号に対応する単価、重量、分類が表示されるエクセルのデータ入力シートを使って仕分けを行っています。
- 1番目の商品を別のシートに表示し、2番目以降の商品を別のシートに表示する方法についても教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問にしては、丁寧に記述して頂いている方だと思いますが、ビジネスがらみの問題は、問題のポイントや細部を捉え難いですね。 ------ 言いかえると、こう言うことでしょうか? (1)毎日入荷商品を入力していて、終わった段階で仕訳しても良いのですね。VBAでやる場合このほうが都合が良い。(バッチ方式、まとめておいて仕訳は一斉にやる方式) (2)品名+連番でソートするとする。 香水、口紅、化粧水、マニキュアなどがそれぞれ集団で行的に固まる。 ただ漢字コード順になってしまいます。 これでは、この質問では都合が悪いらしいので、 右端にでも、1列ワーク列をつくって(下記例ではD列)そのD2に =INDEX(A:A,MATCH(B2,$B$2:B2,0)+1,1)をいれて、下方向に複写する。 (例データ)A2:B10 (A列)(B列) (D列) 1 口紅 1 2 香水 2 3 マニキュア 3 4 口紅 1 5 香水 2 6 マニキュア 3 7 香水 2 8 化粧水 8 9 口紅 1 関数式の結果は上記の通り。 (ソート)ここで上表をD列+B列でソートする。 1 口紅 1 4 口紅 1 9 口紅 1 2 香水 2 5 香水 2 7 香水 2 3 マニキュア 3 6 マニキュア 3 8 化粧水 8 となり、口紅>香水>マニキュア>化粧水の順序は「保存されている」。 ここでD列の1番(口紅)は第1表(Sheet2)、 D列の2番(香水)は第2表(Sheet3)、 D列の3番(マニキュア)は第3表(Sheet4)、 ・・・ に転記すれば良いのですね。 (3)別シートへ転記は関数式ででも出来ます。 しかしソートは関数式では複雑になります。 ソートを使うならVBA(俗にマクロ)を使います。 (4)ソートを使わないならD2に =INDEX(A:A,MATCH(B2,$B$2:B2,0)+1,1)*100+COUNTIF($B$2:B2,B2) といれて、下に複写します。結果は 101 201 301 102 202 302 203 801 103 となります。100掛けたのは、各品目が99回以上でてこないと仮定してのことです。 (5)この101をSheet2の第1行目に 102をSheet2の第2行目に 103をSheet2の第3行目に ・・ に持ってくるのは、MATCH関数で101を探し、INDEXかOFFSET関数で項目を取ってくることが出来ます。 私の過去の回答に数回回答してます。 大筋が、上記の通りで良ければ、その式は希望があれば載せます。
その他の回答 (1)
- web2525
- ベストアンサー率42% (1219/2850)
1 1234 香水 1000円 100グラム 分類 3303.00 2 5645 口紅 900円 50グラム 分類 3304.00 3 2256 香水 3000円 250グラム 分類 3303.00 ややこしくなるかも知れませんが、下記の動作をマクロで記録すると、ワンクリックで解決するのでは? 初めに品名の列を選択して〔フィルターオプション〕を〔重複するレコードは無視〕にチェックを入れ実行。 そうすると入力された品名の順番で重複なしで品名が選出されます。 その項目を<作業領域>にコピー(あらかじめ連番をコピーする箇所の右側に振っておくその番号を区分番号とする)、その後フィルターを解除して全表示。 VLOOKUP関数で〔検索値〕を品名〔範囲〕を<作業領域>に指定して区分番号を振り。 区分番号でソートを掛けた後、一連番号を振る。 ここまでで番号は振れていると思うので後は区分番号ごとにシートにコピー。 この説明では分からないかな?