• 締切済み

マクロの組み方

merlionXXの回答

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

とりあえず参考程度に一例を Sub test01() Dim ns As Worksheet, st As Worksheet Dim a As Long, b As Long, c As Long Dim d As Variant Set ns = Sheets.Add(Before:=Sheets(1)) '先頭にシートを挿入 ns.Name = "まとめ" '名前を「まとめ」に For Each st In Worksheets '各シートにつき If st.Name Like "*ZAIKO*" Then 'ZAIKOが名前にあれば With st 'そのシートの2行目以降の連続データをコピー .Range(.Range(.Range("A2"), .Range("A2").End(xlDown)), .Range(.Range("A2"), .Range("A2").End(xlDown)).End(xlToRight)).Copy End With With ns a = .Cells(Rows.Count, "B").End(xlUp).Offset(1).Row 'まとめシートのデータ挿入先行検索 .Cells(a, "B").PasteSpecial、B列から貼り付け b = .Cells(Rows.Count, "B").End(xlUp).Row .Range(.Cells(a, "A"), .Cells(b, "A")).Value = Right(st.Name, 2) 'A列に日付挿入 If .Cells(1, "B") = "" Then '1行目があいてれば .Range("A1") = "日付" '見出しに「日付」 .Range("B1:F1").Value = st.Range("A1:E1").Value 'その他見出し End If End With End If Next d = Application.GetSaveAsFilename(InitialFilename:=Left(ThisWorkbook.Name, 4) & "まとめ.xls", _ fileFilter:="XLSファイル (*.xls), *.xls") '保存先確認&ファイル名を現在のファイル名の左から4文字+まとめ とする。 If d = False Then 'キャンセルなら MsgBox "ファイル作成をキャンセルしました。" Exit Sub Else Sheets("まとめ").Copy ActiveWorkbook.SaveAs Filename:=d 'まとめシートを保存 End If End Sub

関連するQ&A

  • エクセルで別ブックのセルを参照する式の内部

    エクセルで別ブックのセルを参照する式の内部 別ブックのセルを参照する時は ='パス名[ブック名]シート名'!セル名 という式みたいなので、 ='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5 という式を作りました(パスは適当です)。 それで、 ='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5 ='item\zaiko\[zaiko_2010_06_02.xls]在庫シート'!B5 ='item\zaiko\[zaiko_2010_06_03.xls]在庫シート'!B5 ='item\zaiko\[zaiko_2010_06_04.xls]在庫シート'!B5 と日付を連番で複数のセルに入れていきたいので、 日付の 2010_06_01 の部分を他セルから持ってきたいのですが、 この式の中に 文字列参照のMID() とかで挿入できるでしょうか? 日付の入っているセルがちょうど横の方に連番で存在しています。 分かる方いましたら教えてください。 よろしくお願いします。

  • エクセルのマクロで(1)

    エクセルのマクロで下記のようなことはできますか? なんかとても複雑なような気がしますがもしご存知の方よろしければご教授下さい。   A  B  C  D 1名前 品名 数量 日付 ←タイトル 2山田 たこ  3  日付 3山田 たこ  2  日付 4山田 いか  1  日付 5佐藤 たこ  2  日付 6佐藤 なす  5  日付 となっていた時に下記のようにしたいのです。   A  B  C  D 1名前 品名 数量 日付 ←タイトル 2山田 たこ  5  日付 3    いか  1  日付 4佐藤 たこ  2  日付 5    なす  5  日付 説明: ・1行目はタイトルです ・名前が重なっているのを上の行に1つ入るようにする。 ・山田さんのように同じ<たこ>がある場合、数を足して<たこ>は1つに合計する。ただし佐藤さんの<たこ>とは合わせない。 ・数を合わせた後3行目はスペースが空くのでBに合わせてBが無記入の行のみ詰める。 さらにこんなことができましたら別で構いませんので同時にご教授していただけるととてもありがたいです。 別ファイル(食べ物<日付>.xls)をファイル名にできれば日付が入るように自動作成して A2から品名数の集計を貼り付ける   A  B  C  D 1品名 合計   日付 2たこ 7     日付 3いか 1     日付 4なす 5     日付 だいぶ複雑そうですが何卒宜しくお願いいたします。

  • エクセル 行挿入のマクロについて

    こんばんは、エクセルのマクロについてお伺いします。 現在 A1:支店名 B1:連番 C1:在庫数 全部で1000行位入力があります。 ・A列には支店名 ・B列には連番は1・2・3~と1000件位 ・c列には在個数にはそれぞれ1桁から2桁の数字 【質問】 在庫数の数だけその連番の行を増やしたい。 例えば、 A2:東京支店 B2連番:1 C2在庫数:3 だとすると2行目のあとに2行挿入し在庫数が3なので下記のように3行にしたい。 A2 東京支店 B2連番 1 C2 在庫数 1 A3 東京支店 B3連番 1 C3 在庫数 空欄 A4 東京支店 B4連番 1 C4 在庫数 空欄 何せ数が多いのでマクロをお教え頂ければ助かります。 ※その際、支店名と連番は同じ物がはいるとありがたいです。 ※在庫数は空欄で構いません。 マクロでなくても方法があればお教え下さい。 よろしくお願い致します。

  • エクセル(マクロ) 特定セルのファイル間コピペ

    マクロで下記内容の処理を行いたいと思っております。 どのようなコードにすればよいかご教授よろしくお願い致します。 1.A.xlsを開く 2.B.xlsを開く 3.B.xlsの特定セルの値をコピーする。(特定セルを仮にB4、C7、D9とする) 4.A.xlsのC列にあるファイル名リストから「B.xls」というファイル名の入ったセルを検索する。 5.仮に5行目に「B.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE5、F5、G5とする)に3.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 6.B.xlsを閉じる 7.C.xlsを開く 8.C.xlsの特定セルの値をコピーする。(特定セルはB.xlsと同じB4、C7、D9) 9.A.xlsのC列にあるファイル名リストから「C.xls」というファイル名の入ったセルを検索する。 10.仮に7行目に「C.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE7、F7、G7とする)に8.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 11.C.xlsを閉じる 12.D.xlsを開く 以下、同じ処理を繰り返す。

  • ExcelのVBAマクロ作成で他のExcelから条件つきでデータを取り込みたい

    毎日の在庫データが記載されたファイル群の中から特定のデータのみを他のファイル(貼付け先ファイル)の一つのシートに縦一列にして取り込みたいのですがどうすればよいのでしょう? 具体的には… ・在庫データは年ごとにファイルが分かれている(ファイル名「在庫2003年.xls」など) ・在庫データファイルは月ごとにシートが分かれている(シート名「2003年04月」など) ・シートの中のA列に「日付」(上記のシートなら2003/4/1から2003/4/30まで)、D列に「製品A在庫数」、F列に「製品B在庫数」が入力されており他の列にも様々なデータが入力されている。 ・貼付け先ファイルはA列に日付(2000/1/1~2006/12/10)が入力されている。 この状況で、例えば2003年4月と指定してマクロを実行すると、指定の在庫データファイルのシートから「製品A在庫数」と「製品B在庫数」を貼り付け先ファイルの、日付に対応したB列、C列の部分に入力してくれるようにしたいのですが、VBAの記述の仕方がわかりません。どうすればよいのでしょう? お願いします!

  • エクセルマクロ 次のようなプログラム教えてください

    エクセルのマクロで、次のようなことをしたいと思っていますが、 素人でわかりません。 教えていただけますか。 ---------------------------------- o動かしているファイルをa.xlsとします。  a.xlsは、3行目からA列に名前、B列~D列にデータが入っていて、  各行ごとのファイルを作りたい。(行数は決まっていない)  なお、セルE1にある文字が入っている。 o各ファイルは、原紙としてgensi.xlsとして保存されているファイルに、  a.xlsのB~D列のものを入力したものを作りたい。  (B~D列のデータは、gensi.xlsのそれぞれセルC7・C8・C9に入力する)   gensi.xlsは、a.xlsと同じフォルダにあります。 o作成場所は、「C:\date」の中に、セルE1にある文字のフォルダ、A列に  ある名前のフォルダに作りたい。 (セルE1の文字のフォルダは、マクロを初めて実施するときは無いと思います  が、2回目からは存在すると思います。A列の名前のフォルダはマクロ実施時  にはありません。作成するファイル名は、A列の名前と同じ(フォルダ名と同じ).xls にします。) o実行ボタンを3つ作って、1つは今選択されている行のフォルダ・ファイルを作る。  2つ目は数字を入力させて、今選択されている行から入力した数字の行までを一括  で作成する。  3つ目は、3行目から現在入力されている行すべてを一括で作成する。 ------------------------------- 上記のことをしたいと思っています。 よろしくお願いします。 駄文ですみません。 なお、エクセルは古いバージョンでエクセル2000です。

  • Excel のマクロを作成したい。

    Excel で作成した作業計画表(テ-ブル)に下記マクロを作成し実行したいので。 当初計画表には後述のB,C,Dは存在していない。 下記マクロにてテ-ブル内に追加したセ-ルB=開始日、C=終了日、D=作業期間を自動に求めたい。 タイトルとして 第1行目コロンA=作業者名、B=開始日、C=終了日、D=作業期間、E=2011年10月31日、 F=2011年11月7月、次のコラムから1週間後の日付が設定されている(テストとしてJまで) J=2011年12月5日 第2行Aコラムには作業者=田中さん、B,C、Dを自動で求めたい。 第3行Aコラムには作業者=鈴木さん、B,C、Dを自動で求めたい。 第4行Aコラムには作業者=林さん、B,C、Dを自動で求めたい。 Excel のテ-ブルでは 第2行A=田中さん EからFに(当初はB~G)赤色で線を塗り2週間の作業とした。 第3行Aコラムには作業者=鈴木さん、FからGに赤色で線を塗り2週間の作業、 第4行Aコラムには作業者=林さん、HからJに赤色で線を塗り3週間の作業として計画した。 田中さんの作業開始日は2011年10月31日、終了日2011年11月12日、作業期間は2週間との 結果を求めたい。 下記マクロは Sub test() i = Colum(E)     :Eコラムの番号 x = Colum(J)     :Jコラムの番号 y = EtActivitecell.Row For c = i To x Step 1 If Adresse(Row(y), Colum(c), 4) = "D" Then Adresse(EtActivitecell.Row, EtActivitecell.Colum) = ADRESS(Colum(c), 1, 4) End If Next End Sub

  • excel2000マクロ抽出方法

    2つのファイルがあります。ブック名A.XLS シート名 WORK              ブック名b.XLS シート名 SORT              ブック名A.XLS シート名 WORKに下記のデータが入っています。 AD 1300G A227550 000PA505(C列2行目) 200112(F列)200201(G列)200202(H列)200203(I列)200204(J列)200205(K列)→1行目固定データ AD 1300G A227550 000PA533(C列3行目)   ブック名b.XLS シート名 SORTに下記のデータが入っています。 AD 1300G A227550 000PA505(A列2行目)200112(E列)200201(F列)200202(G列)200203(H列)200204(I列)200205(J列) →1行目E列~J列のデータは都度変わっている AD 1300G A227550 000PA533(A列3行目)    データ抽出条件  ブック名A.XLS シート名 WORKの F列~K列の1行目の列データとブック名b.XLS シート名 SORTの  E列~J列の1行目の列データが同じで、ブック名A.XLS シート名 WORKのC列の2行目以降のコードと  ブック名b.XLS シート名 SORTのA列の2行目以降のコードが同じだったら  ブック名b.XLS シート名 WORKの E列~J列の同じ行にデータを入れる。違うときは、  ブック名b.XLS シート名 WORKのデータはそのままにする。 上記の条件を満たしたマクロの記述の仕方を教えてください。 以上よろしくお願いします。

  • Excel VBA 印刷設定/ヘッダー、フッターの設定

    ヘッダー/フッターと印刷範囲の設定について 教えてください。 「取引情報」シートに下記情報があります。※実際は200行ぐらいの情報です。 No. 取引先名称 日付    製品番号 製品名  備考    金額 1 A株式会社 2009/12/17 GG-GAWA ○○薬品 在庫少ない 29,000 2 B株式会社 2009/11/13 HH-TRAR ○○植物 在庫有   12,000 3 C株式会社 2010/1/13 KK-REAS ○○食材 在庫なし 29,890 [質問事項] 「取引情報」シートの取引先名称ごとに別シートにコピーするマクロをつくります。 コピー先のシートのみにヘッダー/フッターと印刷範囲の設定を行いたいと思います。 ※「取引情報」シートはヘッダー/フッターと印刷範囲の設定は不要です。 自動記録を活用して作業していますが、うまくいきません。 参考になるサンプルがあれば、お教えください。 よろしくお願いいたします。

  • 複数のエクセルファイルをひとつにまとめたい(追記したい)

    複数のエクセルファイルをひとつにまとめたい(追記したい) こんにちは。 他にも似たような質問はあったのですが、どうもやりたい形にするにはしっくりこないもので、質問させていただきました。 12か月分の伝票ファイルを自動で追記?みたいな形で一つにまとめたいのですが、何か良い方法はありませんか? 具体的には 1月.xls(ファイル名)    A   B   C . . . 1 日付 金額 項目 2 1/1 1000 あああ 3 1/5 2000 いいい 4 1/8 3000 ううう . . 2月.xls(ファイル名)    A   B   C . . . 1 日付 金額 項目 2 2/10 1000 えええ 3 2/15 2000 おおお 4 2/18 3000 かかか . . 同様に12月まであります。これを↓ まとめ.xls(ファイル名)    A   B   C . . . 1 日付 金額 項目 2 1/1 1000 あああ 3 1/5 2000 いいい 4 1/8 3000 ううう 5 2/10 1000 えええ 6 2/15 2000 おおお 7 2/18 3000 かかか . . といった形でくっつけたいです。 マクロは現在勉強中なため、あまり分かりませんので、できれば具体的なソースも乗せていただけると幸いです。 ちなみに使用しているのはoffice2003です。 申し訳ございませんが、よろしくお願いいたします。m(_ _)m