• ベストアンサー

エクセルで一枚のシートに入力したものを自動分割するには?

エクセルで顧客名簿をつくっています。担当者は5名ほどで担当名もそのつど入力しております。日付順に毎日入力していますが月末に担当者ごとのシートを自動的に作成できるようなマクロはないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんなのではどうでしょうか? 同じブック内の担当者名のシートに振り分けます。 前もって定数部(const)の4行を設定しておいてください。 尚、顧客名簿シートの1行目は、見出しだとしています。 Sub sample() Const masterSheet = "顧客名簿" '顧客名簿のシート名 Const errorSheet = "エラー" '担当者名が担当者名リストに無かった場合のエラー出力用シート名(前もってエラー出力用シートを作っておいてください) Const tantouColumn = 3 '顧客名簿のシート上での担当者名の列番号 A列なら1,B列なら2,C列なら3,... Const tantouName = "山田一郎,山田二郎,山田三郎,山田四郎,山田五郎" '担当者リスト(前もって担当者名のシートを作っておいてください) Dim sheetName() As String Dim sheet As Worksheet Dim i As Integer Dim s As String Dim r As Long '各シートの存在チェック 'ブック内のシートの名前を取得 s = "," For Each sheet In Worksheets s = s & sheet.Name & "," Next '必要なシート名を配列に取得 sheetName = Split(masterSheet & "," & tantouName & "," & errorSheet, ",") 'チェック For i = 0 To UBound(sheetName) If InStr(s, "," & sheetName(i) & ",") = 0 Then MsgBox sheetName(i) & " シートが無いか、名前が間違っています。" Exit Sub End If Next '各シートのクリア sheetName = Split(tantouName & "," & errorSheet, ",") For i = 0 To UBound(sheetName) 'クリア Sheets(sheetName(i)).Cells.Clear 'シート見出しコピー Sheets(masterSheet).Rows(1).Copy Destination:=Sheets(sheetName(i)).Cells(1, 1) Next 'データのコピー For r = 2 To Sheets(masterSheet).UsedRange.Rows.Count '担当者名の取得 If InStr("," & tantouName & ",", "," & Sheets(masterSheet).Cells(r, tantouColumn) & ",") = 0 Then '担当者名が担当者リストの中に無いのでエラーシート名 s = errorSheet Else '担当者名 s = Sheets(masterSheet).Cells(r, tantouColumn) End If '各シートへコピー Sheets(masterSheet).Rows(r).Copy Destination:=Sheets(s).Cells(Sheets(s).UsedRange.Rows.Count + 1, 1) Next End Sub

yuki0909
質問者

お礼

これ最高ですね。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>マクロはないでしょうか (1)マクロはふつう「作る」もの (2)または他人が作って公表しているものを「使う」 (2)のようなものが市中に(WEB上になど)あるかということかな。 これだけだとたいした機能ではないので、公表もされていないのではと思う。 ーー 回答者に作ってくれませんか、ということなら当質問コーナーの規約違反です。 ーー 質問の内容が判らない。 入力担当者5名。 各担当者は別ブックに入力しているのか。 こういうやり方をしていれば、月末に全員統合した1ブックで1シートの表を作りたいという質問は出こそすれ、質問のように >担当者ごとのシートを自動的・・となぜなるのかな。 ーー 集約シートがあるなら マクロの記録状態にして 担当者+日付でソートし 担当者の区分(セル範囲ごとに)コピーし、別シートへ張り付けをして、マクロの記録をみたら。 担当者の範囲が毎回変わるが、それを(プログラムで)捉えるにはどうするかが判らなければ、それに特化して質問したら。 上記質問のままでは丸投げ。マクロの記録さえとって考えていないようだ。

関連するQ&A

  • EXCELのシート名自動入力

    EXCELでシート名にセルA1の値を自動入力したいので、 下記のマクロを使いましたが、いちいちマクロを実行しないと自動入力できません。 Public Sub SheetName() ActiveSheet.Name = Range("A1").Value End Sub これを、マクロを実行しなくても、セルA1の値が変わった時点で 自動的にシート名も変わるようにできないでしょうか?

  • エクセルのシート間の関連

    エクセルでsheet1に名簿を、sheet2に出席簿を作りました。sheet1、sheet2ともに会費納入日の欄があり、sheet1に入力した日付が自動的にsheet2にも表示されるように、sheet2の該当欄に「='sheet1'!(sheet1のセル名)」という関数式を入力しました。 これで、sheet1に日付を入力(たとえば6/3など)するとsheet2にも同様の日付が表示されるのですが、sheet1の日付欄が未入力(空欄)の場合、sheet2には「1/0」と表示されてしまいます。 これをsheet1で空欄の場合はsheet2でも空欄になるようにしたいのです。どのようにすればよいでしょうか。 うまく説明できずにわかりにくいかと思いますが、よろしくお願いします。

  • Excelのシートからシートへデータを移動したい

    Excelのシートで作成されている申込書(シート)があり、現在はその申込書シート(セル)に記載されている情報を別のシート(顧客データとして管理しているシート、複数行存在しています)に手入力しています。 この手入力の作業をマクロか関数で簡単にしたいのですが、下記の点がクリアできる良い案が分かる方がいたら教えて頂きたいです。 (1)申込書シートは顧客データシートに情報を移動したら、都度上書きしていきたい⇒申込書シートは同じbookで管理しないため(上書きについては申込書内容を都度手作業で貼り付けするつもりです) (2)顧客データシートは顧客が増える毎に2行目、3行目・・・というようA列が空欄になっている一番上に、申込書データの内容が反映されるようにしたい。 (3)貼り付けられたデータ(セル)は関数ではなく、値(文字)が貼り付けられるようにしたい。((1)のように申込書シーは都度上書きしたいため) 分かりづらい質問で申し訳ありません。。 ちなみにマクロは作成したことがありませんが、マクロでできるのであれば挑戦したいと思っています。 ご回答よろしくお願い致します。

  • エクセル入力で項目別に複数シートに自動入力のやりかたを教えてください!

    エクセル初心者です。今とっても困ってます! シート1では1つの会社の全ての売上を入力しています。  シート1  売上表には コードで部署名が出るようにしています。  シート2~シート9までを総務課・税務課などの部署でわけてます。   例)シート2・・・総務課 シート3・・・税務課 ・・・ など そこで、教えてほしいのですが、シート1に入力すると、入力された部署のシートに自動でデーターが入力出来る方法がわかりません。   シート1(入力するシート)    B     C    D   E   F     G  H 11) コード・ 部署名・ 日付・伝番号・商品名・ 車番・担当者  例)  1   総務課  3/1   001 ガソリン 0000  佐藤     2   税務課  3/2   010  軽油  1111  森     1   総務課  3/5   100 ガソリン 2222  山口         といったようなかんじで毎日入力していきます。そこで シート2(総務課請求書)     C    D   E      F    G 9   日付・ 伝番・ 商品名・  車番・  担当者  10   3/1  001   ガソリン  0000   佐藤 11   3/5  100   ガソリン  2222   山口 といったように入力されたらうれしいのですが・・・ シート1に例のような入力したら、シート2の総務課シートにも自動で内容が入力される方法を、おしえてください。 どのような方法がありますでしょうか? 出来ればわかりやすくお願いしたいのですが、よろしくお願いします! 追伸 VBAは全然勉強してないのでわからないのですが・・・ あと、今自分でがんばってシート1からシート2に自動入力はIF関数で出来たのですが、セル番号を関数に入力しているので、例えば総務課のシートで3/1のデーターと3/5のデーターの間に空欄ができてしまいます。理由はその間に税務課のデーターがあるからなのですが、税務課のシートをみてみると、1列あいて入力されました。この空白の列を無くす方法ってありますか?素人なので、説明がわかりにくいと思いますが よろしくおねがいします。。。  

  • エクセルで日付を自動入力したい…

    エクセル2003にて自動で日付、曜日が入力できる方法を教えください。 現在、日曜、祭日除く27(←MAX営業日数分)の日報の台紙シートを、12ファイル(12ヶ月分)作っています。 (1)A1のセルに日付   例;平成19年9月10日 (2)A2のセルに曜日   例;(月) (3)シート名に     例;10月 ←日付+曜日をこの形式。次は11火        という形式で日々入力しています。 シート一枚ずつに上記の作業をしています。         マクロや数式の設定等で手順を簡略化できませんでしょうか??? 毎日の作業なので効率化したく色々勉強したつもりですが改善できずに困っています。 わかる方教えて下さい。よろしくお願いします。

  • エクセルのシートを同時に行削除、行挿入させて自動連動させたい

    エクセルで、横(列)256列以上のデータを入力したいため、シートを分けざるをえません。その場合、次のようなことがしたいとき、どのようにすればよろしいでしょうか?(やりたいことの結論下記(3)になります。) エクセルのシートが2つ以上あるとします。 (1)「sheet1」には、基本データ(名簿録のようなもの・氏名ふりがなアイウエオ順配列) (2)ふたつめ以降のシートには、毎月変更するデータを入力し、「sheet1」の名簿の個々のIDに対応したそれぞれ同じ行番号に入力することになります。 (3)「sheet1」で行削除(名簿対象者解約)や行挿入(新規契約者)を任意の場所で行いたい。それに連動して、2つ目以降のシートでも同じ列で行削除・行挿入を自動でしたい。 ★この簡易システムを作成するのはマクロ初心者の私であり、日々の入力作業するのはエクセルそのものが初心者である他者となります。 ★行挿入、行削除のときだけシートの同時選択を手作業でしてもらうことは想定していません。そのあたりをも含めた自動化の智恵がでてこないのです。 以上、よろしくお願いします。

  • エクセルの自動更新

    1・現在、エクセルの「会員名簿.xls」を開きますと、アクセスの「顧客管理.mdb]の最新データーで、エクセルの「会員名簿.xls」が自動的に更新されるように設定してあります。 2・出来れば、その都度エクセルの「会員名簿.xls」を開かないで、下記のような時点で、エクセルの「会員名簿.xls」を、マクロなどで更新(「会員名簿.xls」を開いた時と同じ状態)出来ないかと考えております。 (A).アクセスの「顧客管理.mdb]を閉じる時点。 (B).アクセスの「顧客管理.mdb]は、閉じる前に必ず初期化ボタンをクリックする設定になっていますのでその時点。 アクセスの知識は皆無ですので、宜しく御願いいたします。

  • excel VBAを使って、データを自動的に表示させたい!

    excelのVBA・マクロの書き方について教えてください!! たとえば、商品データ(商品名、数量、産地、担当者、商品コード)を入力したシートがあります。 別のシートに、商品名と数量を入力するだけで、商品データを参照して、産地・担当者・商品コードが自動で入力されるマクロを作成したいです。 「商品名」だけを入力して、表示させることはできたのですが、 商品名が同じで、数量が違うものがあると、片方のものしか表示されません。 A・B列に「商品名」・「数量」を入力して、自動でデータが表示される方法はありますか??

  • エクセルの入力済みシートの見出しの色を自動で変更する

    現在、毎日の売上集計表を作っています。1~31枚のシートがあります。データーを入力したシートの見出しの色を自動で色を変えることは可能でしょうか?未入力シートと入力済みシートの区別を分かりやすくしたいのですが…(データーは毎日、営業終了後に入力します) 例えば、データー入力後に保存するとシートの見出しの色が変わるとか…これはマクロ等を使用しないと無理でしょうか、あまり詳しくないのですが。 バージョンはエクセル2003です。

  • Excelシートの自動コピーでマクロを使いたい

    表題通り、Excelシートの自動コピーをマクロを使って行いたいのですが、 マクロやVBAの知識が全くないため、どなたかコードを教えていただけないでしょうか。 まず今現在、B1セルに9月1日と日付を入れ、シート名を1日としたものがあります。 これを自動で複製して、B1セルの日付を9月2日 9月3日… シート名を2日 3日…となるように、日毎ごとの一ヶ月分のシートを作り ひとつのbookにしたいと考えております。 また、その際に、B1セルとシート名の日付が日曜・祭日に当たる場合、 シート名に色を付けたいと思っています。 (因みにB1セルの日付はシリアル値で入れていて、 書式で○月○日となるように表示していて、日付が日曜・祭日に当たる場合は 赤文字になるよう、別シートに祝日リストも作って 条件付き書式で設定してあります。) Excelの関数は使えても、マクロは全く分からないので どうかよろしくお願い致します。

専門家に質問してみよう