[[20180508000129]] 『セルに入力されているデータを新シート名に』(いちごみるくキャラメル) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セルに入力されているデータを新シート名に』(いちごみるくキャラメル)

請求書を作っています。

リストシートのB列に顧客名が500件くらい入っているのですが、
毎回原本シートをコピーしてシート名を顧客名に変えています。

作り終えた後は月末にシートごと別ファイルに移動しています。

そこで、原本シートをコピーしB列の顧客名に変えるのを簡単にしたいのですが
良い方法は有りますか?

毎回地味に面倒なので、良い方法を教えてもらえると嬉しいです!

よろしくお願いします。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


やってることがよくわからないけど・・・・
500件くらいのシート名変更を毎回やってるってことですかね

シートのコピーやシート名の操作は数式(関数)じゃどうにもならないように思うのでVBA(マクロ)で処理することを考えてみてはどうでしょうか?
(もこな2) 2018/05/08(火) 00:52


お返事ありがとうございます。

毎月ランダムに100-200件くらいシートのコピーとシート名を変えています。

最初は月初に500シートを2時間くらいかけて作ってたんですが、原本が割とよく変わるのと
使わないシートを作るのが無駄になって辞めました。

やっぱりマクロが要るんですね。。。
やった事無いですが挑戦してみます。
(いちごみるくキャラメル) 2018/05/08(火) 07:34


顧客ごとのシートを作るのではなくデータベースにして

請求書発行の時にまとめて処理するほうがよいのでは

月の途中でもフィルタなどで見ることができるし
(ん) 2018/05/08(火) 08:14


 コードを組んでみました。
 標準モジュールにコピペして実行してみてください。
 顧客名は「リスト」シートのB2から下方向にあるものとしています。

 Sub MakeSheet()

    '変数宣言
    Dim ListSh As Worksheet
    Dim CopySh As Worksheet
    Dim Rng As Range

    '各シートを変数にセット
    Set ListSh = Sheets("リスト")
    Set CopySh = Sheets("原本")

    'リストシートのB2以下データのある最下行まで、原本シートをコピーし、顧客名をシート名に変えるのを繰り返す。
    With ListSh
        For Each Rng In .Range("B2", .Range("B" & .Rows.Count).End(xlUp))
            If Len(Rng.Value) Then
                CopySh.Copy , ThisWorkbook.Sheets(Sheets.Count)
                ActiveSheet.Name = Rng.Value
            End If
        Next Rng
    End With

 End Sub
(ろっくん) 2018/05/08(火) 08:39

ありがとうございます!
マクロ初めてで時間かかりましが出来ました!
マクロって凄いですね!

ほんとうにありがとうございました!
(いちごみるくキャラメル) 2018/05/08(火) 20:43


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.