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

変数の行列(サンプル)
シート名 型番
sheet1   1
Sheet1   2
Sheet2   3
Sheet3   4
Sheet3   5
   ・
   ・
   ・
をプログラムに代入して型番をシートごとに分けていく
マクロを作りたいのですが何かいい方法があれば
教えてくれませんでしょうか。宜しくお願いいたします。

A 回答 (1件)

もう少し詳しく状況と希望する結果を説明されると回答もつきやすいと思います。


A列にシート名が、B列に型番が入っており、A列シート名に該当するシートの型番の列末尾に型番を追加していくということでよろしいでしょうか?

マクロを作りたいとのことですので、ヒントだけ
1、A列を上から順に処理していく
 ・For Each Rangeオブジェクト in セル範囲 ~ Nextで処理
 ・先頭を選択、選択したセルの値取得、一つしたのセルを選択 を選択したセルが空白になるまで繰り返す
 等の方法があります。
2、選択セル内にある文字列でシートを指定
 Sheets(Selection.Value)で可能です。
3、指定列の末尾にデータを追加する
 Range(先頭行のセル番地).End(xlDown).Offset(1,0).Select とするとデータが入力された最終行の1つ下のセルを指定できます。

作成する上での不明点等はソースとともに質問してください。

この回答への補足

訂正
×Selection.AutoFilter Field:=1, Criteria1:=y
○Selection.AutoFilter Field:=2, Criteria1:=y

補足日時:2008/06/09 16:49
    • good
    • 0
この回答へのお礼

どうも返信ありがとうございます。
結果から言いますとマクロを導き出すことができました。
それと実際のシートの方はちょっと複雑なのでうまく伝わる
か分かりませんが、実際には
在庫シート
品番 品名   当月在庫当月在庫金額
1    △△△    3       600
2    ×××    5       1200
・・・
みたいなシートが毎月あがってきます。
本当はこの商品には大品目がありまして
例えると
大品目:魚 品番:1 品名:サンマみたいな。
ただ実際の商品は多い上に品名と大品目がぱっとみただけ
で判断出来ないモノが多いので
番号対応表シート
大品目  品番
 魚    1
 魚    2
 鳥    3
 ・・・
を結びつきが分かる者が作っていきます。

そして下のマクロを試行します。

Sub 仕分君2号()
Sheets(在庫シート).Select
Dim R As Long
Dim x
Dim y
For R = 1 To Cells(Rows.Count, "A").End(xlUp).Row
x = Sheets("番号対応表シート").Cells(R, "A").Value
y = Sheets("番号対応表シート").Cells(R, "B").Value
Sheets(在庫シート).Select
Rows("1:1").Select
Selection.AutoFilter Field:=1, Criteria1:=y
Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
Sheets(x).Select
Sheets(x).Cells(Cells(Rows.Count, "A").End(xlUp).Row + 1, "A").Select
ActiveSheet.Paste
Next R
End Sub

すると、在庫シートから魚シート、鳥シート等に項目が自動的に
区分けされて行きます。
そこから魚シートの統計、鳥シートの統計をしていきます。
このマクロの利点は商品が増えても番号対応表シートをアップデートしていけばマクロをいじらなくていい点です。
その為マクロに疎い者が操作しても比較的簡単に操作
できます。

悩んでいた点は結局のところ、シートセレクトのマクロが
うまくいっておらず途中でマクロが止まっていたようです。
1回試行ならどこが悪いのか分かりやすいのですが繰り返し
試行の際に1回目はうまくいっても2回目以降に繋がらない
というデバッグが発生した際の問題点がなかなか見つかりません
でした。

大変ありがとうございました。

お礼日時:2008/06/09 16:44

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