プロが教える店舗&オフィスのセキュリティ対策術

マクロ初心者です。よろしくお願いします。

B列⇒品名、C列⇒型式、D列⇒価格で、追加入力はB列の一番下にしていきます。

【やりたい事】
品名でフィルターをかけたものを別シート『あ』~『Z』に貼り付けたい。
(添付画像は昇順で並べ替えてあります)
A~Zで始まる品名は『読み』は無視してあくまでA、B…の表示優先です。

商品の追加は不定期で、マクロをかけるタイミングもまちまちですので
前の別シート『あ』~『Z』のデータは上書きして構いません。


不明な点などありましたらご指摘ください。
お手数かけますが、よろしくお願いします。

「【マクロ】あいうえお順のシートに振分けし」の質問画像

質問者からの補足コメント

  • soixanteさん、ありがとうございます。

    作成するシートは、
    『アルファベットのみ』1枚と、『あ~も』の35枚、『や・ゆ・よ』
    『ら~ろ』、『わ』の9枚で全部で45枚です

    B列の品名はかなりあると思います。

    『アルファベットのみ』の中身は、『A~Z』が昇順でならべばOKです。
    『あ』で始まる品名には、アルミテープ、アロンアルファ、安心クッション、などいろいろ
    あります。
    『あ』のシートには、『あ』で始まる品名のみ、昇順でならべたいです。

    これでわかりますでしょうか?

    ご検討、よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/09/13 18:05
  • soixanteさん、ありがとうございました。
    シートを作り、振り仮名をだしてみました。

    その振り仮名で、『ア』~『わ』と、アルファベットの『A』~『Z』で
    フィルターをかけて、
    『ア』で表示されたものをシート『あ』に移動(コピー)させたいです。
    以下、『イ』~はそれぞれのシートで、
    アルファベットの『A』~『Z』で表示されたものは、シート『A』に移動させたいです。

    何度もすみませんが、ご検討、よろしくお願いします。

    「【マクロ】あいうえお順のシートに振分けし」の補足画像2
    No.2の回答に寄せられた補足コメントです。 補足日時:2015/09/13 20:02

A 回答 (13件中11~13件)

D列に振り仮名が取得できたのですね。


だとすれば、これをもとに各シートに割り振ることが出来ると思われます。

ただ、申し訳ないのですが、さきほどのシート作成の時に、ひらがなで作成する話を
してしまいました。
各シート名は、いま作成したD列と揃えてカタカナにしておいたほうが良いでしょうから、
すみませんが、カタカナに変えていただいてはどうでしょうか。

補足No.2 の画面を見る限り、「あ」は3枚目のシートとなっていますが、それ以降のひらがなを
全部カタカナに変えるということで、以下のコードでやってみてください。

'----------------------------------------------------------
Sub b_カタカナに変更()

Dim k As Integer
Dim Nam As String
For k = 3 To Worksheets.Count
Nam = Worksheets(k).Name
Nam = Application.GetPhonetic(Nam)
Worksheets(k).Name = Nam
Next k
End Sub
'----------------------------------------------------------

あとは振り分けですね。ちょっと考えてみます。
    • good
    • 0
この回答へのお礼

soixanteさん、
いつもありがとうございます。
カナになりました。
すみませんが、よろしくお願いします。

お礼日時:2015/09/13 21:23

#1です。


これはもとのシート「入力用」で、どのように昇順並び替えしたのか、というのが
キーポイントとなります。それらを示すコードはどこかに入っていませんか。

なぜなら漢字で始まる商品名、たとえば「安心クッション」は「あ」のように指示
してやらないと意図しない形となる可能性もあります。
「油砥石」は「ゆ」と判定される可能性もあるからです。
振り仮名を取得するならば、=PHONETIC(B5) などでやってもいいかもしれません。

さらに振り分け後も昇順並び替えするならば、どのような順序かを示すコードが無いと
困難かと思われます。
アルファベットは何とかなりそうですが。

そのうえで、45枚のシートを作成し、それぞれのシート名を「あ」「い」などにしておく
必要があります。アルファベットものをまとめるシートは「A」とでも。
これもマクロを使ったほうが早いでしょう。
ある新規ブックを開き、Sheet1のA1から縦に、
A


のように、45個頑張って書きましょう。
そのうえで、以下のコードです。
’------------------------------------------------------
Sub a_シート作成()
Dim Ws1 As Worksheet, k As Integer
Set Ws1 = Worksheets(1)

For k = 1 To 45
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Ws1.Cells(k, 1).Value
Next k
Set Ws1 = Nothing
End Sub
’------------------------------------------------------

このあたりのデータの整備などがしっかりできていれば、
不可能ではなさそうですが、例示の状態だけ、ということであれば、
下準備がかなり要りそうです。
この回答への補足あり
    • good
    • 0

振り分けルールがいまいち不明ですが、B列の品名は何種類くらいあるのでしょうか。


その種類ごとにシートを分けていくと言うのであれば、おびただしい数になるような気がします。

>A~Zで始まる品名は『読み』は無視してあくまでA、B…の表示優先です。
ここもいまいち良く分かりません。
どういう商品名ならば、どこのシートに割り振るのか、そこが不明です。

きちんとした振り分けルールが決まっているならばマクロで可能かと思われます。
この回答への補足あり
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています