• ベストアンサー

VBA データ左側から3文字で分類し新規シート転記

お知恵を貸して下さい。 エクセルに入力された問合せ内容をまとめていく上で困っています。 2列目の会員種別に入力されているデータがくせ者で、左側ら3文字で会員の種類が分かれます。 やりたい仕事は、この会員種別ごとに新規でシートを起こし、3文字mmというタイトルで(mmは上書きで書き換えます)保存までを自動化でしたいのです。 その際、元のデータから特定のセルを選んで転記するのではなく、あくまで会員種別の左から3文字で仕分けます。行は丸ごとコピーする必要があります。 新規シートでシート名までを自動で作成したいのでVBAかと思いまして。 どなたか助けて下さい、宜しくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

1行目はタイトル行,2行目から実データとして。 会員種別がB列に列記されているとして。 (といったような具体的なあなたのシートのレイアウトは,そもそもご相談であなたの方から提示してください) sub macro1()  dim h as range  dim w as worksheet  dim s as string  s = activesheet.name ’転記する  on error goto errhandle  for each h in range("B2:B" & range("B65536").end(xlup).row)   h.entirerow.copy destination:=worksheets(left(h, 3)).range("A65536").end(xlup).offset(1)  next  on error goto 0 ’保存する  for each w in worksheets   if w.name <> s then    w.copy    activeworkbook.saveas filename:="c:\test\" & activesheet.name & "mm.xls"    activeworkbook.close savechanges:=false   end if  next  exit sub ’シートを新調する errhandle:  worksheets.add after:=worksheets(worksheets.count)  worksheets(s).range("1:1").copy destination:=activesheet.range("A1")  activesheet.name = left(h, 3)  resume end sub

masurao200
質問者

お礼

いつもお世話になってます。 説明不足の件、ご指摘ありがとうございました。以後、改めます。 さっそく、作成していただいたもので使用してみました。 新規シートのシート名が仕分けた頭3文字になっていました。 しかし、途中でエラーが出てしまい、新規ブックが開いた状態のまま何も表示されていませんでした。 終了ではなく、デバッグを選ぶと、下記の部分が黄色く選択されておりました。 >activeworkbook.saveas filename:="c:\test\" & activesheet.name & "mm.xls" どのように理解すればよいか、お知恵を貸してください。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>途中でエラーが出てしまい、新規ブックが開いた状態のまま何も表示されていませんでした。 当該のブックに,元データのシートでもなくABCシートでもない,空っぽの例えばSheet2などがある状態でマクロを実行しているのではないかと推測されます。 元データのシートが1枚あるだけの状態から,再度マクロを実行してください。 >終了ではなく、デバッグを選ぶと、下記の部分が黄色く選択されておりました。 これは説明不足だったかもしれません。失礼しました。 「どこに」保存したいのかなんの説明もありませんでしたので,マクロには仮にCドライブにtestというフォルダがあってその中に保存するように書いてあります。 testというフォルダの用意が無いと,エラーになります。 もしくは,あなたが実際に保存したい場所に保存するよう,マクロをご自分で修正していただかなければいけません。

masurao200
質問者

お礼

シートの件も、保存先の件も全てクリアになりました。 いつも助けていただき、ありがとうございます。 今後は説明も工夫して投稿します。 本当にありがとうございました!!!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAとデータの転記について

    今エクセル2003で、以下の上段画像のようなエクセルデータを作成しました。 上段(シート1)が、各商品に対する評価表なのですが、 そこに評価のあった件数が入力されています。 今、シート1の商品名から評価の不可までを、 VBAでシート2に以下のように転記をしたいのです。 先月はたまたま26件だったのですが、 毎月の商品の件数が、決まっていないので、連番記載とセルごとの処理 ループの使い方がよくわかりません。 評価欄は1件でも件数があれば、○印を転記して、空白はそのままで 転記したいのです。 データが多くなるにつれ手作業が大変になってきました。 VBAがまったくわからず、申し訳ありませんが よろしくお願いします。

  • 〔EXCEL VBA〕で「第1のシート」のデータを「第2のシート」に転

    〔EXCEL VBA〕で「第1のシート」のデータを「第2のシート」に転記する方法 EXCEL2003でデータが480行/65列ある第1のシート(データベース的)があります。 第1のシートの列にデータが入力されている場合のみ、第2シートの指定されたセルに検索した列の 表題と検索したデータを結合して転記したいのですが良い方法が分りません。 その際、各行毎に検索し空白列は第2のシ-トに転記せず左詰めにして転記したいのですが・・・・ 初心者に合せたご教示をお願いします。 また、Excel VBAの短期マスター法が御座いましたら合せて教示願います。 以上、宜しくお願い致します。

  • VBA シート上の転記について

    If 入力シート.Range("A4").Value = "会社" Then Dim 会社シート最終行 As Long 会社シート最終行 = 会社シート.Range("AA65536").End(xlUp).Row + 1 会社シート.Range("A" & 会社シート最終行).Value = 入力シート.Range("A4").Value 会社シート.Range("A" & 会社シート最終行).Value = 入力シート.Range("B4").Value VBAで上記のように入力していて、これに会社シートのA行を別のシートに転記したい場合どういう入力方法になるのでしょうか。 同じ公式で会社シートの所をsheet1、入力シートの所を会社シートと入力したのですがまったく反映されませんでした。 VBAを始めたばかりなので試行錯誤しながらしています。

  • VBA:値をシート間で転記する方法

    初投稿です。 最近VBAを学習しはじめた経理担当者です。 弊社指定納品書を売却した際の台帳をVBAで管理しよう と思います。 月末にその台帳を集計して指定納品書売却代金を仕入れ 代金と相殺して買掛金を計上します。 注文があったさいには仕入先コードと枚数を入力すれば 自動で台帳に記録され、請求書(エクセル同じブックで 作成)も印刷されるように設定したいと思います。 そこで台帳のフォーマットと請求書のフォーマットに それぞれ入力する必要がないように入力用フォームを 別シートで作成しようと思います。 A(sheet):入力用シート B(sheet):納品書売却台帳(Dsheetを参照する参照式有り) C(sheet):請求書 D(sheet):取引先マスター Asheetの入力必須項目は「仕入先コード」と「購入枚数」 とします。 Asheetで入力した値をBsheetに転記して、上から順番に 転記する方法はどうすればよろしいでしょうか? (Bsheetは月別台帳の為月によってデータ数が異なります) 勉強はじめたばかりなので上記作業が可能かどうかも わかりません?(シート間の値の移動及び自動印刷) ご指導お願い致します。

  • VBA別シートの同じ日付に値を転記したいのですが

    元データに日付・名前・開始時間・終了時間が入力されていて、人数が150人ほどいます。画像のように元データから別シートの同じ日付に開始時間と終了時間を個人別に転記したいのですが、どうすればいいか悩んでいます。 元データから転記したいデータが1つであれば下記URLを参考にできたのですが、転記したいデータが3つあり、Aさんの4/1~4/30までのあとにBさんの4/1~4/30まで…のように転記したいと思っています。 大変伝わりにくい文章で申し訳ないうえの、VBA初心者のためコピペできる形でお答えいただけると大変助かります。 どなたかご教授いただけないでしょうか…よろしくお願い致します。 参考URL:https://kirinote.com/excelvba-sheet-samedate/

  • 急!!Excel VBA 転記マクロを教えて下さい

    Excel VBA超初心者です、 急ぎ作らなければならない資料があり、ご助力願います。 次の様な転記するアクションをコマンドボタンに設定したいです。 Sheet1の列A(先頭セルA2)に入力したデータを、 追加した(入力間違い等を除き、保存した)データ分だけ Sheet2の列B(先頭セルB3)の最終行から転記させていく。 列Aに入力したデータは、並び替えをするので (この分は、今回のVBAに含みません。入力・転記後、Sheet1で普通に並び替えをします。) 列Aと列Bのデータの順番が異なる。 以上です。 どうぞ宜しくお願いします。

  • データ転記。うまく転記できないシートがあります。

    エクセルのデータ転記について助けてください。 現在 エクセルで職場で使用する現金出納帳を作成中です。完成間近なのにつまずいてしまいました。 作成にもう長い時間かかっるので今週中になんとか仕上げたいのです。 (職場での周りの目がこわくって・・・) どうかどうかよろしくおねがいします。 *各シートの説明 【シート1(元帳)】は記入用シート(1年間の経費等の入力をします) A1は表題 2行目はタイトル行で B列:月日、C列:曜日、:D列:経費部門コード(以下部C)、E列:経費部門名(D列の部C入力時に他シートにあるデータベースからLOOKUPで抽出して表示するようにしてます) F、G列は手入力用の内訳や備考の列、H列:収入金額、I列:支払金額、J列:差引残高。(I・J列は転記必要なしです) データはB3(日付)から入力します。 データ表の範囲はとりあえず100行目まで(A1からJ100) 【シート2~シート16(シート名はD列の経費部門コード番号です)】 こちらが転記先シートです。 A1に部門コード、B2に部門コード名(A1のコードでデータベースより抽出)2行目はB列:月日、C列:曜日、D、E列:内訳、備考、F:支払金額 【シート17(経費部門コードのデータベース)】 部門番号と部門名を表にして 元帳で入力の際 ここからひっぱってくるようになっています。 番号は15種類(経理上不規則な番号):1・2・4・5・6・7・8・9・10・12・20・21・22・仕・給(これをシート名にしてます) *希望する完成仕様 元帳(シート1)に入力したデータが同時に部門C別シート(15種類)に必要な項目だけ転記される。必要な項目は上記のシート説明参照。 *現在の作成状況 ・元帳のシート A3に'=COUNTIF($D$3:D3,D3)&D3 以下 A列はA3をコピー ・15枚の部門番号のシート B3(転記初期行)に'=IF(ISERROR(VLOOKUP(ROW(元帳!A1)&$A$1,元帳!$A$1:$I$100,2,0)),"",VLOOKUP(ROW(元帳!A1)&$A$1,元帳!$A$1:$I$100,2,0)) C3,D3,E3,F3列はB3をコピーしLOOKUPの列番号を変更 *現在の状況と問題点 シート4・5・6・7・8・9・10・12・20・21・22はきちんと転記する。 シート1(部門C:1)は部門C:1と部門C:21のデータが転記されてしまう シート2 (部門C:2)は部門C:2と部門C:12と部門C:22のデータが転記されてしまう。 この2つのシートは 下1桁でひっぱってきてしまってるのは分かるのですが改善方法が分かりません。 どうかこの2シートがきちんと動く数式を教えていただけるでしょうか? 文章力不足のため 質問の理解にさぞ悩まれるでしょうがどうぞよろしくお願いします。 補足:01 02 04と 二桁でもしてみましたが反応は同じ。 よく分からなくて セルの表示変えても値は1・2・4になってしまうんです・・。 結局よく分かりませんでした。

  • 条件付で別シートに転記するVBA

    エクセルにて Sheet1に 工事種別コード 注文者 工事名 受注金額 工事金額 工事原価 工事利益 工事利益率  工事完工月 工事受注月  を横に向けて書き、それからどんどん下にデータを打ち込んでいきます。 これで出来上がったシートから別のシートに 1 注文者別一覧 2 工事種別コード一覧 3 工事完成月一覧 4 工事受注月一覧etc  とボタン1個で 転記できるマクロ(VBA)の書き方をご指南ください。 よろしくおねがいします。

  • エクセルでデータを蓄積するVBA

    蔵書管理用の一覧表です。 エクセルでデータ入力用のフォームは作ることができたのですがシートに転記するVBAをどのように書けばよいのか分かりません。 データは次々に増えていきます。 A列には番号を入力せずに自動的に番号が増えていくようにしたい。 3番まで入力済みのあとは、自動で「4」と番号が付与されて、下の行に転記されるようにしたい。 VBA初心者です。よろしくお願いします。 A    B      C          D 番号 分類     図書名      冊数 1   文庫本    日本の歴史   3 2   週刊誌    新潮        1 3   月刊誌    月刊ゴルフ    1

  • 転記 マクロ VBA

    VBA初心者です。今シートが2つあり、一つは「明細」シート、もう一つは「入力」シートです。明細シートは3万行程あり、列はA~Sまであります。入力シートも全く同じ列並びでA~Sまであります。共にA列が伝票No.という項目になっており、今このA列にどんどん伝票No.を入力していき、最後に転記ボタンを押して残りのB~S列を明細シートから一発転記できるマクロができないかと考えております。どなたか詳しい方教えて頂けないでしょうか。宜しくお願い致します。

専門家に質問してみよう