• 締切済み

VBAマクロで離れた結合行に順次データを挿入

マクロ初心者です。 本やサイトを参考に調べたのですが、どうしても自力ではできないので、お力をお貸しください。 特殊な書式を使わなければならないため、既存のexcelテンプレートでは対応できません。 同一フォルダ内での作業です。 各学級に委員会は2~3名、クラブは0~10名が在籍しています。 <データ> 学級毎に別ファイルの名簿があります。 1行目が項目です。 2行目以下がデータで、出席番号順です。 1クラス40名以下です。 このデータファイルはエクセル初心者でも入力しやすいようにしておく必要があるため あまり変更はできません。 委員会およびクラブ名は、プルダウンで入力されています。    A     B    C   D    E    F 1 出席番号 学年学級 氏名 ふりがな 委員会 クラブ名 2 3 4 ・ ・ ・ <作業1> <データ>から委員会ごと、クラブごとの名簿を作りたいです。 ○○委員会、△△クラブをプルダウンで選択すると 3行目以下に名簿が学級毎出席番号順で並ぶようにしたいです。 委員会とクラブは、別シートあるいは別ファイルにしたいです。          A         B         C 1(項目行) 平成○年度 (委員会/クラブ名選択) 委員会/クラブ 2(項目行) 学年学級        氏名       ふりがな 3      学年学級1       氏名1      ふりがな1 4      学年学級1       氏名2      ふりがな2 5      学年学級2       氏名3      ふりがな3 6      学年学級2       氏名4      ふりがな4 7      学年学級2       氏名5      ふりがな5 8      学年学級3       氏名6      ふりがな6 9      学年学級3       氏名7      ふりがな7 10      学年学級3       氏名8      ふりがな8 11      学年学級3       氏名9      ふりがな9 12      学年学級3       氏名10      ふりがな10 ・        ・          ・ ・        ・          ・ ・        ・          ・ <作業2> <データ>もしくは<作業1>から 評価カードに、 学年学級と委員会/クラブ名をプルダウンで選択することで 下記のように氏名を挿入したいです。 氏名の横などに担当者が手書きで評価を記入していく書式です。 この書式は変更不可能です。   A                   1 A空白  BCDEFG結合(学年学級選択) HI空白  JKLMN結合(委員会/クラブ名選択) 2(空白行) 3           JKLMNOPQRSTUV結合(担当者名が自動挿入) 4(空白行) 5(空白行) 6(空白行) 7(空白行) 8(説明行) 9・10結合(項目行) 11・12結合 ABCDE結合(氏名1) 13(説明行) 14(説明行) 15(説明行) 16(空白行) 17・18結合(項目行) 19・20結合 ABCDE結合(氏名2) 21(説明行) 22(説明行) 23(説明行) 24(空白行) 25・26結合(項目行) 27・28結合 ABCDE結合(次の氏名) 以下、下記の欄に続くの氏名が順次挿入されるようにしたいです。 35・36結合 ABCDE結合 43・44結合 ABCDE結合 51・52結合 ABCDE結合 59・60結合 ABCDE結合 67・68結合 ABCDE結合 75・76結合 ABCDE結合 83・84結合 ABCDE結合 説明の足りないことがあればご教示ください。 どうぞよろしくおねがいいたします。

みんなの回答

  • nazo-nazo
  • ベストアンサー率39% (17/43)
回答No.1

高度(VBAの精通者なら30分程度で仕上げるかもしれないが)な内容だと思います。 それに全ての回答は大変なので、質問をさらに分解して聞いた方がよろしいかも。 <作業1>のヒントだけですみません。 (1)委員会/クラブ名が選択されるセルはWorksheet_ChangeのTarget.Addressで認識する。 例:セルB1が変更された。 Private Sub Worksheet_Change(ByVal Target As Range) If StrComp("$B$1", Target.Address, vbTextCompare) = 0 Then msgbox "セルB1が変更された。" End If End Sub (2)別ファイルのデータはWorkbooks.Openでそれぞれファイルを開きデータを取得する。

関連するQ&A

  • エクセル2行ごとに空白を挿入し2行の項目を挿入する

    エクセルに以下のような一覧表が何百件あるとします。    氏名  社会保険料 雇用保険料 源泉徴収税 控除額計・・・・←項目はセル結合で2行です  田中      6,742     357      1,214   8,313・・・・・←関数合計が入ってます  小林      5,821     321      1.101   7,243・・・・・  佐藤      5,943     228      1,581   7,752・・・・・   ・        ・       ・        ・     ・  それぞれの人に明細を切り取って渡す場合、田中さん以外は項目がないので、小林さん以下の人にも項目が分かるようにしたいのですが簡単に項目を挿入出来る方法がありましたら教えてください。  2行ごとに空白を挿入(タイトル(項目)が2行なので)する方法は分かったのですが、  その空白すべてにタイトル(項目)2行を一気にはりつけたいです。     ジャンプ機能で空白を一気に選択し、2行の空白を結合、項目をコピー貼り付ける方法ではできました。  ただマクロを使ったり、関数を使ったり、誰が使用しても簡単にできる方法がありましたら助かります 。        

  • エクセルのマクロ(VBA)について質問です。

    前回もお世話になりました。今回もまた、VBAの質問です。 ある表があります。 A「No.」B「氏名」C「フリガナ」(D「順番」)という項目があります。 項目名はそれぞれ2行目にあります。 データ入力は3行目からで(セルA3)、入力範囲は32行分です。 毎回32名分すべてにデータが入っていればやりやすいのですが、 31名以下の場合に問題があります。 フリガナ順に並べ替える時に、「データ」→「並べ替え」で「フリガナ」項目を 昇順で並べ替えていますが、この時、セルA3からセルC34までを 範囲指定して上記方法で並べ替えると、入力されていない空白の行までも 並べ替えられてしまい、その空白行が先頭から並べ替えられてしまいます。 そういったわけで、現状ではセルA3から入力されている一番下の データのC列(25名分登録ならセルC27)までを手動で範囲指定し 上記並べ替えを行なっています。 空白行を除いて、入力したデータ分だけ並べ替えたいのですが、 まったくわかりません。 これを何とかVBAで解決したく、質問をさせて頂きます。 お知恵を頂きたく思いますので宜しくお願い致します。 情報が不足でしたら、補足要求をお待ちします。

  • excelのマクロで条件による行の挿入

    列AとBがあり列Aに学校のクラス名A組、B組、C組・・・(20クラスほど)と氏名が 入るエクセルシートがあるのですが 先頭行はA組から始まり5行区切りで数え、(A組も5行のうちに入る) その5行内に次のB組が入らないように空白行を挿入したいです もし、5行以内にB組がない場合、次の5行でまたB組があるか判定しなければ氏名5つ あれば空白をいれてというのを20クラスぶん作るマクロは可能でしょうか? VBAの知識がさっぱりないので途方にくれています。 元のデータの例   マクロ実行後 列A   列B      列A   列B A組           A組   氏名1 111      氏名1 111  氏名2 222      氏名2 222 B組           空白行挿入 氏名3 333      空白行挿入 氏名4 444      B組 氏名5 555      氏名3 333 氏名6 666      氏名4 444 氏名7 777      氏名5 555 C組 氏名6 666              氏名7 777              空白行挿入              空白行挿入              空白行挿入              空白行挿入              C組  

  • マクロによるセル挿入

    エクセルについて教えて下さい。 いま仮に、        ABCDE ~ U VWX YZ 1行 あいうえお    アイウエオ 2行 かきくけこ    カキクケコ 3行 さしすせそ    サシスセソ     :         : とデータが入っていてV~Z列はそのままに、A~U列の行間にだけ16行の空白行を作りたいのです。 つまり最終的に、    ABCDE ~U VWX YZ 1行 あいうえお   アイウエオ 2行           カキクケコ 3行 (空白)     サシスセソ     :         : 17 かきくけこ     :   (空白)     : 33 さしすせそ     :   という感じなのですが、これを手作業でA2:U16を選択してセル挿入→A18:U32を選択して挿入と繰返していては時間がかかってしまうので、マクロによって一発で出来る方法はありますでしょうか? お詳しい方がいましたらお手数ですが教えて下さい。

  • Excel VBA - 空白の結合

    以下のようなExcelのシートがあります。 A2からC7を選択した後、マクロを走らせて空白セルを結合したいです。   A B C 1 (空白) DDD (空白) 2 ABC 123 (空白) 3 (空白)(空白)(空白) 4 DEF GHI DEF 5 (空白)(空白)(空白) 6 (空白) 789 123 7 (空白)(空白)(空白) 8 GHI JKL MNO A3はA2と結合、A5,6,7はA4と結合、B列、C列も同様です。 要は、空白セルを上にある値の入ったセルと結合したいのです。 ただ、C2が選択範囲外のC1と結合すると困るので、先頭行の空白は、上の選択範囲外セルと結合しないようにしたいです。C2とC3は、結合しませんが、結合する仕様でも問題ありません。 (A2と同じ値をA3に入れた方がいいという意見があると思いますが、会社の表なので結合しないといけません。) ※以前、似たような質問をしましたが、少し違います。(これは未解決です。)

  • <エクセル>マクロを使ってデータを入力したいのですが・・

    エクセル初心者のため、 どなたかご存知の方がいらっしゃいましたら教えていただけないでしょうか。 エクセルで、ある申込書のフォームにデータ(氏名・フリガナ・生年月日・年齢等を入力したいのですが100名分くらいあるためマクロを作って元データからコピーできれば・・と考えています。 100人分の元データはSheet1にあり、 1名につき1行で、A1に氏名、B1にフリガナ、C1に生年月日・・・(~F1まで)となっています。(~100行目まで) そのデータをSheet2にある申込書フォームの該当欄にコピーしたいのですが、簡単な方法はありますでしょうか。 Sheet2には10名分の入力欄があるので、、 Sheet1の1行目の人のA1(氏名)のデータをSheet2のB12(氏名入力欄)へ、 Sheet1の2行目の人のA2(氏名)のデータをSheet2のB14(氏名入力欄)へ、 ・・・・・ Sheet1の10行目の人のA10(氏名)のデータをSheet2のB30(氏名入力欄)へ、 という感じでコピーしていきたいです。 (フリガナ、生年月日、年齢などそれぞれ欄があります) とりあえず10人分ずつSheet2にコピーできるマクロが組めれば大変助かるのすが・・・。 説明も上手にできず申し訳ないのですが・・・。 私の知識レベルでは100人分こぴぺこぴぺする方が早いのかもしれませんが どなたかアドバイスをいただければ大変うれしいです。 どうか、宜しくお願いいたします。

  • 結合セルを含む空白行に下のデーターを上に詰める

    先ほど、質問を出さしていただいたのですが、説明文が詰められているため醜くなってしまいましたので再度出さしていただきます。 よろしくお願いします。 結合セルを含む空白行に、下のデーターを詰める。 下記の場合の、【かわ、やま】は、1行目と2行目のセルを結合させています。また、【うみ、たに】は、3行目と4行目のセルを結合させています。     A    B    C    D    E 1            100   AAA         かわ            やま 2            200   BBB 3            空白   空白         空白            空白 4            空白   空白 5            111   CCC         うみ            たに 6            222   DDD これを、下のようにしたいのです。     A    B    C    D    E 1            100   AAA              かわ            やま 2            200   BBB 3            111   CCC         うみ            たに 4            222   DDD 結合されているため下の構文では詰めることができません Dim LastRow As Long With ActiveSheet LastRow = Range("A232").End(xlUp).Row Range("B1:E" & LastRow).Sort Key1:=Range("B1"), Order1:=xlAscending End With

  • Excelでマクロを使用して、列を表示させる質問です。

    Excle2003での質問です。 C3セルからAE78セルまでにデータが入力されています。 C列には項目名・3行には氏名が並んでいます。 D4セルからAE78セルには、 各人に対応する項目に○や△等が記入されています。 (空白セルもあります) A1セルに氏名を記入して(3行目のリストから選択して)、 マクロを実行させると、 1.氏名を一致する氏名の列のみを表示して、 2.オートフィルタで空白以外の行を表示する。 (ただしC列の項目名は表示されたまま) このようなマクロを組みたいのですが、 初心者の私ではまったく分かりませんでした。 どなたかご教授いただけたらと思います。 よろしくお願いいたしますm(_ _)m

  • CSVファイルの項目行を削除して結合するには?

    お世話になります。m(__)m 2000行ほどのCSVファイルが数個あります。 このCSVデータをすべてひとつのファイルに結合したいのですが、 ・それぞれのファイルの1行目にある項目データを削除したい。 ・結合後の1行目には項目名を残したい。 ・可能であればコピーバッチのようなもので作成したい。 と、このように思っております。 どのような手があるか教えて下さい。

  • VBAでの行挿入について

    Excel VBAの条件に合った場合、行挿入&挿入した行のセルに特定の値を入力 VBA初心者です。Excel2007、XPを使用しています。 A列からCK列、平均100行程度の顧客データがあります。 このデータは列数は変わりませんが、行数は毎回異なり、 1行1顧客ではなく、同じ顧客で数行で入ることがあります。 しかしA列の顧客番号で判別できるようにはなっています。 目標は下記の点です。 「BC列」に値がある場合、 1行下へ空白行を挿入(できればA~X、Z~AA、AD~CKは1行上と同じ)。 但し挿入する位置は、顧客情報の一番下(1行の場合は2行目、2行の場合は3行目と)です。 挿入した行のY列に「ポイント利用」と入力。 挿入した行のAC列に「BC列の値」を入力。 挿入した行のAB列に「1」を入力。 「BJ列」に値がある場合、 1行下へ空白行を挿入(できればA~X、Z~AA、AD~CKは1行上と同じ)。 但し挿入する位置は、顧客情報の一番下(1行の場合は2行目、2行の場合は3行目と)です。 挿入した行のY列に「送料」と入力。 挿入した行のAC列に「BJ列の値」を入力。 挿入した行のAB列に「1」を入力。 以降に必要な処理はマクロで作成できたのですが、 その後に上記項目を手作業で処理しているのも限度があるので、 最初に挿入処理できればと思ってます。 分かりづらい説明だとは思いますが、 何卒ご教授頂きたくお願い致します。

専門家に質問してみよう