• 締切済み

条件に合う行だけを切り取り→別ブックに自動転記

【環境】 Windows7 Office2013 【目的】 Excelで作ったcsvデータを、条件に合うものだけ抜き出して別ブックに自動で転記したい (1つの表を2つに分けたい) 【詳細】 ※オートフィルを使うという前提で説明しますが、目的の結果が得られるのであれば   オートフィル以外の方法でも構いません。 csvのデータがあります。 その中からオートフィルを使って「M列」で条件を選択(複数)し、その結果を 抜き出して(切り取って)別のブック(別シートではダメ)に自動転記したいです。 最終的に、元々の表Aから条件に合ったものだけを表Bとして保存。 表Aから表Bのデータを抜いたものは、そのまま表Aとして上書き保存。 ・・・したいです(添付画像参照) ネットで調べたところ、表の中に検索条件を入れる欄を作って・・・という方法 ならあったのですが、データ(csv)はそのままシステムに取り込むので 余計な欄を増やしたり等はできません。 そこで行き詰ってしまいました。 【表の詳細】 A~S列まであります。 項目名などの行は無く、1行目からデータが入っています。 ※行数は、都度変化します。 M列の中から「90」「95」の物だけを抜き出して、表Bとしたい。 【やってみたこと】 オートフィルでの操作を「マクロの記録」で記録しようとしたのですが、 オートフィルの結果だけを「切り取る」ことが出来ず、ダメでした。 どなたかお知恵をお貸しください。

みんなの回答

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.9

こんにちは コードの真ん中下辺りの .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy x.Worksheets(1).Range("A1") Application.DisplayAlerts = False の間に、 .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy x.Worksheets x.Worksheets(1).Range("P:P").EntireColumn.AutoFit ’このコードを追加 Application.DisplayAlerts = False と入れてみて下さい。

angelnavi
質問者

補足

ushi2015様 間が空いてしまい申し訳ございません。 月末・月初でバタバタしていました。 本日やっとご教示いただいたコードを追加してみたのですが、 結論から申し上げますと上手く行きませんでした。 まず、「間に・・・入れてみて下さい」の内容について確認をしたいのですが、 .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy x.Worksheets(1).Range("A1") x.Worksheets(1).Range("P:P").EntireColumn.AutoFit ’このコードを追加 Application.DisplayAlerts = False ↑で合っていますでしょうか? これで実行しても、以前と同じように元表A'(90・97を省いたデータ)は P列のJANコードが壊れてしまいます。 これは、csvデータを(「データ」→「テキストファイル」からインポートせずに) そのままExcelで開いてしまった場合と同じ現象だと思います。 因みに今回気づいたのですが、P列の書式が「指数」になっています。 正常な方の別表BのP列は「標準」になっています。 何とかなりそうでしょうか… 私も忙しいため、遅くなっても構いませんのでお返事をお待ちしています。 よろしくお願いいたします。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.7

こんにちは 先に回答した通りマクロブックには何も起きません。 名前を付けて元表Aと同じ場所に別のブックを作成しています。 確認して下さい。

angelnavi
質問者

補足

ushi2015さん ありがとうございます!! 申し訳ございません。 私が見落としていました。 確かに、元表Aがあるフォルダに別表B(M列が90と97の物)が 出来ていました。 (以前私が「90」と「95」と書きましたが、それは私の間違いで、  「90」と「97」だったので、そこは自分で直しました) そして元表Aからは「90」と「97」のデータがちゃんと消えていました。 素晴らしいです!! ありがとうございます。 が、1点だけ問題がありました。 処理前の元表AのP列はJANコード(13桁の数字)で、 4.56223E+12 というような表示になっています。 が、VBAを実行した後の表A(「90」と「97」が除かれた物)は、P列が 4.56E+12 と、何故か短くなっています。 (別表Bは、ちゃんと元の「4.56223E+12」表示になっています) そのため、その後の処理でP列のJANコードをちゃんとした13桁の表示 (例:4562234567890)に直す際に、「4562230000000」のような間違った 数値になってしまいます。 そこが直れば完璧です。 何度も申し訳ございませんが、ご検証をお願い申し上げます。 よろしくお願いいたします。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

>あと、この場をお借りして申し訳ありませんが、「kagakusuki」様 >もし、これを読まれていたら、先ほどの私の補足に何か返信していただけませんか? >「更に補足」ということが出来ないため、私からコメントすることが出来ない状態になってしまいました。  本来の使い方ではないかも知れませんが、その様な場合にはお礼欄に書き込む事は出来なかったのでしょうか?  今回、回答No.3様の御回答に対する補足コメントを目にする事が出来たのは本当に偶然で、普段の私はこのサイトのページの右上の方に表示されている[お知らせ通知]の件数を見て補足やお礼の有無を判断しているため、他の回答者の方のコメントのところに連絡を入れられても気づかない恐れが非常に高いです。 【参考URL】  OKWAVE はじめてガイド マイページ(お知らせ機能について)   http://guide.okwave.jp/mypage/notification/

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.5

こんにちは 個人用マクロブックではなくて、新規ブックでいいです。 新規ブックを開いて、AltキーとF11キーを同時に押してVBEの画面を開き メニューバーの挿入で「標準モジュール」を挿入し、前記したコードを コピーして貼り付けます。 実行はシート画面でリボンの開発タブでマクロボタンから行います。

angelnavi
質問者

補足

月末で業務が忙しく、なかなかお返事が出来ず申し訳ございません。 新規ブックからの実行は既に試しました。 このページの一番下の私の補足コメント(2016-10-20 12:09:31)を 見て頂けますでしょうか? 新規ブックで実行をすると、すぐに「ファイルを開く」画面が出て 来ます。 そこで元表Aを指定するのですが、その後何も起こりません。 (新規ブックは、開いた直後の白紙の状態のまま) どこを改善したら良いでしょうか?

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.4

こんにちは マクロはマクロ実行用のブックにセットしておいて実行します。 ファイル開くでCSVファイルを選択すると、CSVファイルは「91」「95」 を除いたデータに、「91」「95」のデータは新規ブックとしてCSVファイルと 同じ場所に作成されます。 新規ブックの名前は「test実行年月日時間.xlsx」です。 実行後のCSVファイルとCSVファイルの保存フォルダ内を確認して下さい。 処理自体を見るにはマクロコード内をクリックしてF8キーでステップ実行すればいいです。

angelnavi
質問者

補足

ありがとうございます。 「個人用マクロブック」を使ったことがなかったので、下記サイト https://allabout.co.jp/gm/gc/297809/2/ を参考にして作ろうとしたのですが、「マクロの記録」から作る やり方なので上手くできませんでした。 そこで、適当な操作を記録して、VBAの編集画面で教えて頂いたコードに 変更すれば良いと考え、そこまでは上手くできました。 が、編集したあとにExcelを閉じようとすると「保存しますか?」と出てきた ので保存しようとしたところ「読み取り専用のため保存できません」と 出てきました。 C→user→AppDATA…と辿って行って開いたのですが、どうして読み取り専用 になったのかわかりません。 そもそも、そのような回りくどいやり方ではなく、もっとスマートなやり方 があるのではないか?と思いました。 素人のためご迷惑をおかけしますが、VBAをマクロブックに登録する簡単な 方法があれば教えていただければ幸いです。 (私の方でも、もう少しググってみます) よろしくお願いいたします。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.3

こんにちは csvのデータ、表Aは閉じておいて、ファイル開くで選択して下さい。

angelnavi
質問者

補足

すみません。 先にも書きましたが、表Aは開かずに新規のファイルから 実行してみました。 すぐに「ファイルを開く」の画面が出て来るので、表Aを選択 しましたが、何事も起こらず新規ファイルがそのままの状態 になります。 何かやり方が間違っていますか? Excelファイルを一切何も開いていない状態で、VBAを実行する ことが出来るのでしょうか? あと、この場をお借りして申し訳ありませんが、「kagakusuki」様 もし、これを読まれていたら、先ほどの私の補足に何か返信して いただけませんか? 「更に補足」ということが出来ないため、私からコメントすることが 出来ない状態になってしまいました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>オートフィルを使って「M列」で条件を選択(複数)し という事で、抜き出す対象となるM列の値が複数存在しているという事と、抜き出す対象となるM列の値が必ずしも「90」と「95」であるとは限らないと思われるため、抜き出す対象となるM列の値を選択するというところまでは、マクロを起動させる前に手動でオートフィルターを使って済ませておき、その後でマクロを使って選択された行のみを新規に作成した別のブックに転記するものとします。  尚、csvのファイル自体にはVBA等のマクロを保存する事が出来ない様ですから、大元のcsvのファイルでマクロを使用するのではなく、大元のcsvのファイルをコピーして作成したxlsmファイルでマクロを使用するものとします。  また、マクロを起動させる際には「表A」が存在しているシートをあらかじめ開いておくものとします。  それから下記のVBAのマクロは、もし該当データが無い場合には、新規ブックを開くなどの処理は行わず、転記すべきデータが存在しない事を知らせるMsgboxが現れて、そのMsgboxを閉じるとそのままマクロが終了される様になっています。 Sub QNo9245201_条件に合う行だけを切り取り→別ブックに自動転記() Const ReferenceColumn = "M" 'オートフィルターで値を選択する対象となる列 Const ItemRow = 1 '表の各列の項目名が入力されている行 Dim NewBook As Workbook, LastRow As Long, myRange As Range LastRow = Range(ReferenceColumn & Rows.Count).End(xlUp).Row If LastRow <= ItemRow Then MsgBox "転記すべきデータが見当たりません。" & vbCrLf _ & "マクロを終了します。", vbExclamation, "データ無し" Exit Sub End If With Application .ScreenUpdating = False .Calculation = xlManual End With Set NewBook = Workbooks.Add With ThisWorkbook.ActiveSheet .Cells.SpecialCells(xlCellTypeVisible).Copy NewBook.ActiveSheet.Cells(1, 1) Application.CutCopyMode = False .Range(ItemRow + 1 & ":" & LastRow).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp .Cells.AutoFilter End With With Application .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End Sub

angelnavi
質問者

補足

すみません。 画面を更新していなかったので、こちらのご回答を見落としていました。 後ほど試行させて頂きます。 業務のスキマで質問していますので、結果はまた明日の報告になる かもしれませんが、よろしくお願いいたします。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 該当データが無い場合は空のブックが出来ます。 Sub test()   Dim s As Variant   Dim t As Workbook   Dim x As Workbook   s = Application.GetOpenFilename("CSV Files (*.csv), *.csv", , , , False)   If s = False Then Exit Sub   Application.ScreenUpdating = False   Set x = Workbooks.Add   Set t = Workbooks.Open(s)   With t.Worksheets(1)     .Rows("1:1").Insert Shift:=xlDown     .Range("A1") = "dummy1"     .Range("A1").AutoFill Destination:=.Range("A1:S1"), Type:=xlFillDefault     .Range("A1").AutoFilter     .Range("A1").CurrentRegion.AutoFilter Field:=13, Criteria1:="=90", _       Operator:=xlOr, Criteria2:="=95"     .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy x.Worksheets(1).Range("A1")     Application.DisplayAlerts = False     .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Delete     x.Worksheets(1).Rows(1).Delete     x.SaveAs t.Path & "\test" & Format(Now(), "yyyymmdd hhmmss") & ".xlsx"     x.Close     .Parent.Save     .Parent.Close     Application.DisplayAlerts = True   End With   Application.ScreenUpdating = True End Sub

angelnavi
質問者

補足

早々にありがとうございます! …が、すみません。 私がVBA詳しくないので教えて頂けますでしょうか。 ご教示いただいたコードを、元の表Aを開いた状態で実行したところ 「ファイルを開く」画面が出てきました。 既に開いている表Aは開けないので、全く新規のブックを開いて 実行し、「ファイルを開く」が出たところで表Aを選択して「開く」 を押しましたが、何事も起こりませんでした。 どうしたら良いでしょうか・・・ ※VBAは、Alt+F11で画面を開いたあと、挿入→標準モジュールで登録してます。 ※ちなみに表Aは、日々DLする新しいデータになるので、VBAはクイックアクセス  ツールバーに登録するつもりです。

関連するQ&A

  • 別のブックに、同じ数字を転記する

    すいません。初心者なので教えて下さい。 別のブックに、同じ数字を転記したいのですが、簡単な方法はないでしょうか? ブック1   A   B  組数  人数 1 1  3 2 4  5   ブック2   A   B 1 1  3 2 4  5 と同じようにしたいです。関数など、何かありましたら教えて下さい。

  • VBA 別BOOKへのデータ転記について

    VBA初心者です。 以下のことがしたいのですが、 コードをご教示いただきたくお願いいたします。 BOOKが5つあります。 BOOK1:抽出用(Sheet2に日々の受注データを入れています)        BOOK2:転記100用 BOOK3:転記200用 BOOK4:転記300_400_500用 BOOK5:工事番号用 BOOK1:抽出用はA列からQ列まで工事番号ごとに2行目から受注データが入っています。 抽出用のsheet2のA列に「1」と入力することで転記したいデータだというフラグにし、 抽出用O列のコード100,200,300,400,500(工事の種類のようなものです)を見て、 該当のBOOK2から4にその工事番号が転記がされているか? (されていれば登録済みのメッセージ表示) 転記がされていなければ新規に登録、 新規登録の際に、抽出用Sheet2のD列の工事番号、I列の件名、K列の数量を表示して、 このデータを新規登録しますか?のようなメッセージを出し、Yesなら新規登録。 さらに、新規に登録した際にはその工事番号を名前とするBOOK5を新規作成、 BOOK5にも抽出用の受注内容を転記。 BOOK2から4に転記された工事番号をクリックすると その工事番号のBOOK5にジャンプするようにしたいのです。 抽出用A2とA4に「1」と入力された場合(O列は共に200) BOOK1抽出用データの転記したいセル番地  →  BOOK3転記200用のセル番地 A2のデータ D2 → A7 K2 → A8 C2 → A9 H2 → A10 I2 → A11 F2 → D7 L2 → D8 M2 → D9 J2 → D10 C2 → I5 Q2 → J5 A4のデータ D4 → A12 K4 → A13 C4 → A14 H4 → A15 I4 → A16 F4 → D12 L4 → D13 M4 → D14 J4 → D15 C4 → I10 Q4 → J10 BOOK2から4は1つの工事番号を5行使用して表わしています。 ですので、1つの工事番号が7から11の行、 2つ目の工事番号が12から16行目となり、それぞれ100件分の工事番号を入れられるように 作成してあります。 またBOOK5については、(A2のデータの場合)以下のように転記し、ファイル名を抽出用D2の工事番号にしたいです。 A2のデータ D2 → A3 K2 → A4 C2 → A5 H2 → A6 I2 → A7 F2 → F3 L2 → E4 M2 → E5 J2 → E6 大変長くなってしまいましたが、以上のようなことをしたいと考えておりますが、 当方、VBA初心者でして参考書とネットを駆使して抽出用のVBA(CSVデータをコピーして加工する)ことにすら大苦戦しております。 なんとかお力を貸していただけないでしょうか? ご教示よろしくお願いいたします。

  • 2つのBook間で共通のキーワードを使いデータを転記するには?

    下記のようなデータがある場合、Book1/sheet1のD列へ Book2/sheet1 C列のデータを転記したい。キーワードは 各Book B列のロットNO.です。どのようなマクロを 組めばいいのでしょうか? Book1/sheet1    A    B    C    D 1  品名 ロットNO. 数量 2  A   A123   25   50(転記) 3  A   A234   20   75(転記) 4  A   A345   22   60(転記) ・ Book2/sheet1    A    B    C    D 1  品名 ロットNO. 時間(HR) 2  A   A123    50 3  A   A234    75 4  A   A345    60 ・

  • マクロ 2つのブック 条件一致 転記

    2つのエクセルブックがあります。 1つがIDデータ表になって、IDと払い出し内容と日付の3つがあります。 もう1つがID管理票で、IDを担当ごとに管理している票です。 IDデータ表のIDとID管理票のIDを一致したら IDデータ表の払い出し区分の単語を基準に(新規・変更・廃止) ID管理票.xlsに乗っているIDの横に 払い出し区分の単語の条件で 新規の場合,ID右隣に日付を転記 変更の場合,IDの2つ右隣に日付を転記 廃止の場合,IDの3つ右隣に日付を転記を行いたいのですが FINDメソッドを使い、行のB列の区分で判定して、日付を書き入れるのと Offセットでセルの位置を指定するのと「IDデータ表」.xlsの特定の範囲のデータを繰り返す というアドバイスをもらいましたが 繰り返し処理(ForやLoop)をよく理解していないからだと思います。 どなたかご教示くださいますでしょうか。 下記に簡素でありますが構成状態と 処理の概要と画像添付させて頂きます IDデータ表.xls    A列         B列       C列 1  ID番号     払い出し区分   日付 2  110001241      新規      10/2 3  120000065      変更      10/3 4  190000036      廃止      10/4     ↓ 以下100行くらい続いています ID管理票.xls ID番号の場所がバラバラで AO列にあったりBC列にあったりしています。 また、ID管理票にすでに日付が入っていることもありますが それはそのまま上書きで問題ありません。 110001241, 10/2       (新規区分なのでIDの右隣に日付を転記) 120000065, 空白 10/3     (変更区分なのでIDの右2つ目に日付を転記) 190000036, 空白,空白,10/4   (廃止区分なのでIDの右3つ目に日付を転記) お手数ですがよろしくお願いいたします

  • VBA 別ブックへのデータ転記

    別ブックへのデータの転記についてご教示お願いいたします。 以下、やりたいことです。 Bookの構成4種類 1.抽出用 (csvデータをコピーして、転記用Bookに移す為の加工をしており、A列に〇がついたものでO列の値(1~3)別にそれぞれのBookへ転記しようと考えています。 2.転記O列1用 3.転記O列2用 4.転記O列3用 現在のコードは以下の通りで、わからない点は大まかに2点あります。 1点目は、O列の値(1~3)の値を見てBookを開く(現在は指定のBookを開くコードになっています) 2点目は、転記用への転記の方法 例えば、抽出用のA2とA4に〇がついてO列が共に1だとすると、転記O列1用のBookを開いて、 A2のデータを以下のように。 抽出用   転記O列1用 P列の値 → A7へ C列の値 → A8へ H列の値 → A9へ I列の値 → A10へ F列の値 → E5へ L列の値 → D6へ M列の値 → D7へ K列の値 → F9へ J列の値 → D8へ A4のデータを以下のように。 抽出用  転記O列1用 P列の値 → A12へ C列の値 → A13へ H列の値 → A14へ I列の値 → A15へ F列の値 → E10へ L列の値 → D11へ M列の値 → D12へ K列の値 → F14へ J列の値 → D13へ 以上のような事がしたいのですが、 現在、勉強中の初心者で…参考書を見ながら以下のコードまでしか出来ませんでした。 このコードもめちゃくちゃなのかもしれないのでお恥ずかしいのですが… なんとかこのデータを仕上げたいと思っています。 ご教示よろしくお願いいたします。 Sub ボタン2_Click() Dim myCnc1 As String Dim myCnc2 As String Dim myFileName As String Dim sheet1 As Worksheet myFileName = "受注.csv" Set sheet1 = Worksheets(2) sheet1.Activate myCnc1 = "TEXT;" myCnc2 = ThisWorkbook.Path & "\" & myFileName With ActiveSheet.QueryTables.Add( _ Connection:=myCnc1 & myCnc2, _ Destination:=Range("A1")) .TextFilePlatform = 932 .TextFileCommaDelimiter = True .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1) .Refresh End With Columns("A:A").Insert Columns("B:B").Select Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _ FieldInfo:=Array(1, 5) Columns("G:G").Select Selection.TextToColumns Destination:=Range("G1"), DataType:=xlDelimited, _ FieldInfo:=Array(1, 5) Columns("O:O").Select Selection.TextToColumns Destination:=Range("O1"), DataType:=xlDelimited, _ FieldInfo:=Array(1, 5) Dim r As Long r = Range("E" & Rows.Count).End(xlUp).Row Columns("E:E").Insert Range("E2:E" & r).FormulaR1C1 = "=LEFT(RC[-1],10)" Range("E2:E" & r).Value = Range("E2:E" & r).Value Range("D1").Copy Range("E1") Columns("D:D").Delete Columns("H:H").NumberFormatLocal = "0_ " Columns("O:O").Insert Range("O2:O" & r).FormulaR1C1 = "=Right(RC[-1],3)" Range("O2:O" & r).Value = Range("O2:O" & r).Value Range("N1").Copy Range("O1") Range("O1") = Range("N1") + "2" Range("A1").Select Dim myRng1 As Range Dim myRng2 As Range Dim mySht As Worksheet Set myRng1 = _ ActiveSheet.Range("c1").CurrentRegion With myRng1 .AutoFilter Field:=3, Criteria1:="=J*" Set myRng2 = .SpecialCells(xlCellTypeVisible) .AutoFilter myRng2.EntireRow.Hidden = True On Error Resume Next .SpecialCells(xlCellTypeVisible).EntireRow.Delete On Error GoTo 0 myRng2.EntireRow.Hidden = False End With Set myRng1 = Nothing Set myRng2 = Nothing myFileName = ThisWorkbook.Path & "\転記O列1用.xlsm" Workbooks.Open Filename:=myFileName End Sub

  • 行の一部を別シートに転記するには?

    VBA初心者です。 業務でエクセルで工程管理をしているのですが、ご相談です。  工程管理表              作業工程表 1 佐藤 7/2 7/15 ○       1 7/2 7/15  ○ 2 田中 7/3 7/11 □       2 7/3 7/11  □ 3 佐藤 7/3 7/16 ○       3 7/3 7/16  ○ 4 伊藤 7/3 ―  ▲       4 7/5 7/15  ○ 5 加藤 7/5 7/15 ○ 工程管理表は A列には入力した人の名前 B列には入力した日 C列には作業予定日 D列には作業内容 と、複数の作業者が随時入力します。 D4の▲は工程として発生はしたのですが、他部署管轄だったため、 当部署では作業の必要がないため、ただ記録として残しているものです。そのため、Cの作業日が-(ハイフン)が入っています。 これを別シート[作業工程表]にB~D列を転記したいのですが、  今は各作業者が範囲選択してコピーする方法をとっています。 ですが、コピペ忘れが多くこの状態を解決できないかと考えています。 なお、これは同一ブック内で行われています。 1. 工程管理表のB列、C列、D列すべてが入力されていて、    C列が"-"でない場合に作業工程表へ転記する 2. 作業者が随時入力した時点で「作業工程表」に登録したい。 ということになります。 どなたかご指導よろしくおねがいします。

  • マクロで別のブックに転記するやり方

    エクセルのマクロで勤務表というブックのA5からA10までの"出勤"という文字を"○"に置き換えて 別の集計表というブックのA6からA36に転記する場合どのような書き方になりますか? 例えば置き換えは Sub test() With Range("A5:A10") .Replace what:="出勤", replacement:="○", lookat:=xlPart End With End Sub このような感じになると思いますが、他にやり方があればよろしくお願い致します。

  • エクセル マクロで別ブックから転記するやり方

    エクセルでBook1(集計用)と、 店舗→Book2(大宮店)、Book3(東京店)・・・・・ 何店舗もあるんですがそれぞれの店舗のA30,B30,C30,D30の数字を Book1(集計用)のA列に並んだ店舗名のB列、C列、D列、E列に転記させたいと考えています。 今までは関数を入れて読み込ませていましたがこれをマクロで作成させる場合どのようにすればよいでしょうか? 何か他にいい案があれば教えていただきたいと思います。 よろしくお願いいたします。

  • Book間のデータ転記を自動化したい

    Book A からBook Bへ毎日データをコピーしています、これを自動化できないでしょうか? Book A      A    B    C    D 1 会社名1  data11 data12 data13 2 会社名2  data21 data22 data23 3 会社名3  data31 data32 data33 Book B     A    B    C    D 1 日付1  data11 data12 data13 2 日付2  data14 data15 data16 3 日付3  data17 data18 data19 Book A は1日につき1ファイルづつ毎日増えていきます会社数は日によって違いますが大体40~50くらですデータ数は1行につき15個で一定です。 Book B は会社ごとにシートが作ってありBook Bの中に約35シート入っています。 少し説明がわかりにくいかもしれませんが、やりたいことは毎日Book Aというファイルを渡されるのでその中から主な会社35社のデータを会社別に日付順にしたいのでBook Bへ手作業でコピーしています、毎日のことなので結構大変です自動でコピーできないでしょうか? それとも何か別の方法でもっとスマートに処理できますか?

  • 複数のキーを参照して、別ブックに転記する方法

    KeyIDと項目名を参照して各セルの記載を別ブックに転記したいのですが、VBAで動かす方法をどなたかご教示いただけますでしょうか。 マスターブックから、複数のブックへ、KeyIDを元に適切な項目名のセルに転記をさせたいです。 また逆に、複数ブックからマスターブックへも同じ方法で転記可能なVBAを組みたいと思っております。 KeiIDに対して、200以上の項目列があるので、毎回Vlookupをかけるのがかなりの手間で、何とか自動化できないか考えたのですが、複雑すぎてお手上げ状態です・・・ 皆様のお知恵を拝借したく、何卒よろしくお願いいたします。 作業の流れとしては、マスターブックを開きマクロを走らせると、任意のブックを開くように指示が出るので、それを開く。(ここまでは作成済み) 複数ブックのKeyIDが数千行あるので、それをマスターブックの数万行の中のKeyIDと合致するかを確認し、合致する場合は、200項目の中で一致するセルに複数ブックの内容を転記する。またその逆もできるようにする、という感じです。 それぞれのブックは以下のような作りになっています。 複数のブックの項目名は、ブックごとに異なりますが、マスターブックには全ての項目名が入っています。 KeyIDおよび項目名のある列・行は、三つのブックでそれぞれ異なります。 KeyIDがどちらかに存在しない場合もあるので、その場合は無視する、という設定にしていただけますと助かります。 マスターブック    A列   B列  C列    D列    E列    F列 ~200列 23行 名前   住所  KeyID  電話番号  作業予定  作業実績 ブック1    A列   B列   C列    D列 ~150列 12行 KeyID   住所  作業予定  作業実績 ブック2    A列  B列   C列 ~100列 5行  名前  KeyID  作業実績 どうぞよろしくお願いいたします。

専門家に質問してみよう