[VBA]エクセルシートから読み取り、全入力する

このQ&Aのポイント
  • 図のような2つのエクセルブック(統計.xlsx)(マクロ.xlsx)があります。統計ブックのデータをマクロブックに自動的に入力できるVBAがわかりません。
  • マクロ.xlsxには、4/15~4/21までの日付が記入されている。県庁所在地が入っているセルはM3です(わかりにくいため)。固有文字は、固有文字と固定で入力する。
  • 統計.xlsxのシート名を検索し、マクロ.xlsxのシート内で統計.xlsxの日付を検索します。それぞれ連番を振り、所定の位置にデータを全て入力します。
回答を見る
  • ベストアンサー

[VBA]エクセルシートから読み取り、全入力する

いつも大変お世話になっております。 図のような2つのエクセルブック(統計.xlsx)(マクロ.xlsx)があります。 統計ブックのデータをマクロブックに自動的に入力できるVBAがわかりません。 [条件] http://infovivra.s100.xrea.com/1.jpg (統計.xlsx) http://infovivra.s100.xrea.com/toukei.xlsx http://infovivra.s100.xrea.com/2.jpg (マクロ.xlsx) http://infovivra.s100.xrea.com/makuro.xlsx  ・マクロ.xlsxには、4/15~4/21までの日付が記入されている ・マクロ.xlsxには10のシートがあり、同じ内容である ・県庁所在地が入っているセルはM3です(わかりにくいため) ・固有文字は、固有文字と固定で入力する [作成マクロ] (1)統計.xlsxのシート名で検索する。 (2)マクロ.xlsxのシート内で、統計.xlsxの日付で検索する。 (3)それぞれ連番を振り、日付で検索した所定の位置にデータを全て入力する。 (4)大項目ごとに行が移るが、同じ大項目で日付が異なる場合は同じ行に記入する。 (日付が重なった場合は、次の行に記入) (5)K2セルの日付は(2012/4/16)といった形式で記入され、可変する、統計データも同じ。 といった内容になっております。 [追記] [VBA] 年度を指定し、以降の日付を表示する というご質問もさせていただいておりますので、 もしお時間がございましたら、宜しくお願いいたします。 何卒宜しくお願いします。 gitmyk

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

  • ベストアンサー
  • TAKA_R
  • ベストアンサー率32% (26/79)
回答No.1

自動で入力したいとのことですが、どのように自動で書きますか? 1.統計シートの最後の列を書き終わったら、自動的に(関数みたいに)1行ごとに書き込み。 →イベントプロシージャ 2.書き込み済み統計シートを持ってきたら、ボタンみたいなのを押してシート丸ごと読み込み&書き込み →サブプロシージャ ただの使い勝手の違いだけですけれどね。

関連するQ&A

  • VBA ワークシートオブジェクトがうまく使えない

    以下のサブプロシージャ、動きません。 Sub main() Dim Thissheet As Worksheet Set Thissheet = ActiveSheet Workbooks.Open Filename:="Book2.xlsx" Range("A1").Copy Destination:=ThisWorkbook.Thissheet.Cells(1, 1) Range("B1").Copy Destination:=ThisWorkbook.Thissheet.Cells(1, 2) ActiveWindow.Close End Sub 機能:Book1.xlsxで上記マクロを起動すると、Book2.xlsxを開きセルの一部ををBook1にコピーし、閉じる エラーメッセージ: コンパイルエラー メソッドまたはデータ メンバーが見つかりません。 Range("A1").Copy Destination:=ThisWorkbook.Thissheet.Cells(1, 1) この行のThissheet.で引っかかります。 ちなみにThissheetの代わりにWorksheets(1)を用いるとうまくいきます。 Thissheetを用いた場合、何がマズイのでしょうか? 以下の認識で書いてますが、誤りあるでしょうか? ThisWorkbook=マクロが納められているワークブック、つまりBook1.xlsx Activesheet= 行を実行した時にアクティブになっているワークシート、ここではBook1.xlsxのマクロ起動時のワークシート

  • Excel マクロ・VBAの印刷方法について

    急ぎの回答です!! 関数式の入っているセル(空白表示)を印刷範囲に入れずに印刷する方法を教えてください。 別シートのデータを関数で引っ張てきてひな形のセルに表示しています。 行→$1:$6 列→$A:$Agは印 刷タイトルに設定。 A列7行目から1.2.3... とNo.が入っており、 B.~J. 列7行目からはデータが最終の50まで入力してます。( 関数式=IF(COUNTIF(コード,$S$1)<ROW(A1),"",OFFSET([元リスト.xlsx]商品一覧!A1,MATCH($S$1,コード,0),1)) ) K.~AG.列7行目からは書式データ(同じ文面の繰り返です。最終の50まで入っています)B~J列の7行目から関数(データ)=IF(COUNTIF(コード,$S$1)<ROW(A1),"",OFFSET([元リスト.xlsx]商品一覧!A1,MATCH($S$1,コード,0),1))をコピぺと一部を変更しセルへ入力して別シートからデータを引っ張てきてます。この関数だと該当する値がない場合はセルは表面上は空白セルに見えますが、セルには数式が入っている状態です。セルデータの最終行を習得し印刷に設定すると関数入力されているところで最終行と認識し、関数式を入れている50行まで印刷してしまいます。 したいことは、データが表示されている30行までなら30行まで印刷という感じにはできないでしょうか? シートを様式一枚ずつ作成しており、1ブックには20シートずつ保存しています。そしてこのブックはおよそ30ブックあります。 1ブック内の全てのシート(20シート)に反映できるようしたいです。 ※30行までデータが表示されている場合、C~Jには途中とちゅうで空白欄がありますが、B列は30行全てデータの表示(該当する場合)されます。 Excel マクロ VBA に詳しい方回答お願いします! B7からはB56まですべて関数式を入力しています(最大50までデータが表示されるように) シート枚数と、元のデータ数が行で7000程とかなり多く、このような関数式になりました。できればマクロ、VBA等での処理が望ましいです(時間がないので><)よろしくお願いいたします!!!

  • エクセルVBA 他ブックの同じ行に貼り付け(可変)

    皆さんこんにちは。 度々こちらでお世話になっております。 エクセル2013使用のVBA初心者です。 ブック1の「検索」シートで絞り込み結果が1つになるまで 絞り込んだ後の話です。 ブック1「検索」シートで絞り込み、結果が1行になったら その行をコピーして ブック”データベース.xlsx”のSheet1の(検索シートと)同じ行に 貼り付けをしたかったのですが 下記のコードですと”データベース.xlsx”を開いて保護をやめるところまで動くのですが 貼り付け箇所でエラーが出てしまいます。 エラーは「1004RangeクラスのPasteSpecialメソッドが失敗しました」です。 原因はなんとなく「行」をWith Sheets("検索").AutoFilter.Rangeじゃないところで 使っているからかな?と思っているのですが 『可変の検索シートの絞り込み結果行と同じ行を  他ブックで選んで貼り付け』 の書き方が分かりません。 ブック1検索シートの絞り込み結果1行(可変)をサーバー上にある データベース.xlsx”のSheet1の同じ行に貼り付ける方法を 教えていただけないでしょうか。 --------------------------------------------------------------------- With Sheets("検索").AutoFilter.Range With .Resize(.Rows.Count - 1).Offset(1) Dim 行 As Integer 行 = .Columns(1).SpecialCells(xlCellTypeVisible).cells(1).Row Sheets("検索").Range("A" & 行).EntireRow.Copy Workbooks.Open Filename:="¥¥***.**.**.**¥DATE¥データベース.xlsx" Workbooks("データベース.xlsx").Sheets("Sheet1").Unprotect Workbooks("データベース.xlsx").Sheets("Sheet1").Range("A" & 行).PasteSpecial Workbooks("データベース.xlsx").Sheets("Sheet1").Protect Workbooks("データベース.xlsx").Save Workbooks("データベース.xlsx").Close

  • Excel 微妙に違う2つのシートのデータをリンクさせる

    ある程度 同じデータのブック1とブック2があり、 ブック1は祭日などデータが無い日も日付があり、行が確保されていますが、 ブック2は祭日などデータが無い日は行が抜いてあります。 A列:日付、B列:曜日 C列:データ1、D列:リンクを入れる 04.11.22 月 56  =[ブック2.xls]シート1!H2 04.11.23 火  04.11.24 水 50  =[ブック2.xls]シート1!H3 04.11.25 木 52  =[ブック2.xls]シート1!H4 04.11.26 金 49  =[ブック2.xls]シート1!H5 04.11.29 月      04.11.30 火 A~C列はブック1、2とも同じデータです。(現在ブック1は1400行、ブック2は1300行くらい) D列にブック2のH列のデータを表記したいのですが、ドラッグなどでは行がずれてしまいます。 関数かマクロなど、何か良い方法を教えて下さい。 下記のことにも対応できれば更に便利なのですが・・。 ブック2のH列は時々J列とか他の列(表範囲内)に移動します。 そしてたまにはブック2のシート1もブック1に移動したりブック2に戻したりもします。

  • ExcelのVBAで作りたいんです

    Excelのマクロで以下のようなものを作りたいのですが、調べても適当なものが見つからず、どのようなコードを書いたらいいのか分からないので有識者の方のお力をお貸しください。 Sheet1に検索ワードが入力された表を作成しておきます。(表自体は数十行程度で1列だけ) Sheet2にSheet1に書かれている検索ワードがあるかどうかを調べて、該当した場合にはその行を削除する。 もしくは別シートに移動する。 この作業をSheet1の検索ワード行数分自動で処理する。 Sheet2は数百行程度で複数列ありますが、検索ワードが該当さえすれば削除(移動)してしまって構いません。 また、話は変わりますがこのようなものも作りたいのです・・・。 CSVからの整形用マクロがあるのですが、整形処理が終了したら整形済みのシート(例としてSheet2~5)から1つのシートにまとめたい(Sheet1へ)と思っているのですが、データがどこまで入力されているか(Sheet2~5に)の判断と、Sheet1へのコピーでSheet1にどの行までデータが入っていてどの行から追加すればいいのかをお教えください。

  • エクセルで、他シートから統計のシートへリンクさせたい

    エクセルで、他のBookやシートなどあらゆるデータから、一つの統計を取るbookへリンクさせたいのですが、どのようにすればよいでしょうか? 例:) 請求書.xls sheet1 8月1日に売り上げた商品、製造番号、価格等明細(請求書も兼ねる) sheet2 8月1日に売り上げた商品、製造番号、価格等明細(請求書も兼ねる) sheet3 8月1日に売り上げた商品、製造番号、価格等明細(請求書も兼ねる)         ・         ・         ・ (日付ごと、シートが増えていく) 統計.xls sheet1   8月に売り上げた商品名、製造番号、価格一覧表 sheet2   9月に売り上げた商品名、製造番号、価格一覧表 今までは、一つ一つ手書きで入力していましたが、製造番号の記入ミスも怖いし、手間が凄い時間なので、何か自動化してくれる良い方法があればご教授お願いします。 問題は、日々、3~7個の製品が売れ(変動)、それぞれ価格も番号も違います。 1つの製品につき1行づつ使っており、請求書.xlsには7製品分(7行分)の製品が記入できるように雛形を作っています。3個までしか売れなければ残りの4行は空欄になります。 統計.xlsでは、行をあけないようなリストにしたいです。 何か参考になるサイトでもかまいません。 どうぞよろしくお願いします。

  • 複数エクセルブックを一つにするマクロが知りたいです

    フォルダ内に「01.xlsx」「02.xlsx」…「10.xlsx」という10個のブックがあります。 各ブックの中には、ブック名に対応した形で「01」「02」…「10」というシート名のシートが一つだけ入っています。 同フォルダ内に「matome.xlsx」というブックを用意して、マクロ処理をかけることで、「matome.xlsx」の中に「01」「02」…「10」のみの10個のシートが入った状態にしたいです。 マクロ処理をかける前の「matome.xlsx」のシートには、「sheet1」という、シートが一つだけ入っている状態です。 仕事のデータをまとめるのに、困っています。。。 何かいい方法はありますでしょうか。 マクロに詳しい方、お教えいただければ幸いですm(_ _)m

  • エクセル 1つのシートを日付で複数シートに分けたい

    エクセル2007を使用してます。初心者です。 1行名に列ごとのタイトルが入ってます。 A列~S列まで色々とデータが入っており、M列に日付(20140618のように)が入ってます。 このシートを日付ごとに別シートに分けたいのですが、何か計算式かもしくはマクロでできますか? できれば、R列に入っている数字を日付のあとにつけて自動で保存できると大変助かるのですが・・・。(20140618-2 というような感じ) マクロの扱い方も良く分からないので教えていただけると助かります。

  • エクセルVBA、マクロについて教えてください。

    https://box.yahoo.co.jp/guest/viewer?sid=box-l-62itttdrrgzrvsaxkvu53tmg3a-1001&uniqid=d4c90186-7ae6-4c7a-8f04-a499509147fc&viewtype=detail サンプルブックを見て頂きたいのですが、シートに分けておりますが、それぞれ別ブックとなります。 エクセルブックAにはシート1-シート10まであります。 ブックAのデータをVBAを使って、ブックBに転記したいのですが、 今はVBAがわからないため、作業列、関数を使って読み取っているのですが、検索をかけると、とても遅いため、関数を消すと早く検索が出来たため、VBAでデータを転記出来たらいいなと思っております。 いくつか条件があるのですが、 ブックAのAQ-ATが作業列としており、 ブックBのG-Uまで関数を入れております。 G4==SUMIFS('[ブックA.xlsx]シート1'!$AD:$AD,'[ブックA.xlsx]シート1'!$AQ:$AQ,$A4,'[ブックA.xlsx]シート1'!$AS:$AS,$F$2,'[ブックA.xlsx]シート1'!$AT:$AT,G$2) H4==SUMIFS('[ブックA.xlsx]シート1'!$AD:$AD,'[ブックA.xlsx]シート1'!$AQ:$AQ,$A5,'[ブックA.xlsx]シート1'!$AS:$AS,$F$2,'[ブックA.xlsx]シート1'!$AT:$AT,H$2) I4==SUMIFS('[ブックA.xlsx]シート1'!$AD:$AD,'[ブックA.xlsx]シート1'!$AQ:$AQ,$A4,'[ブックA.xlsx]シート1'!$AS:$AS,$F$2,'[ブックA.xlsx]シート1'!$AT:$AT,I$2) 同じような関数をG-Uまで入れております。 このような関数を入れております。 E4==VLOOKUP(A4,'[ブックA.xlsx]シート1'!$B:$AC,28,FALSE) この関数をなくすとAdvancedFilterが早くなるので、ここの部分を転記出来たらと考えております。 ブックAとブックBはブックAのB列のコードとブックBのA列のコードが一致すれば、転記すると言った感じです。 決まっている部分は、商品コードは重複しないのと、ブックAのB列は結合されております。 結合セルのため、作業列を使用しておりました。 ブックAの基準をかえずに転記できる方法があればおしえてください。

  • エクセルVBA初心者です。マクロを組んでください。

    エクセルVBA初心者です。組んで欲しいマクロがあります。 Sheet 1に13桁を入力するセル sheet 2に検索したいデータ 手順としては、 Sheet 1のセルにデータを入力 →13桁以上でマクロが開始(されるように設定します) →Sheet 1のセルと同じ数列をSheet 2の列Aから検索 →該当のセルを含む行をSheet 3にコピー →Sheet 1の入力セルの少し下にもコピー (確認用) というのを一回一回ずつやりたいです。 できれば作業中マウスやキーボードを触りたくないので、そのために、マクロの終わわりには入力セル内の消去、マクロの始まりには確認用でコピーした行の削除もつけて下さい。 検索するSheet 2には同じデータが含まれているので、出来ればひとつずつSheet 3にコピーしたいので組み込んで頂けると幸いです。 よろしくお願いいたします。

専門家に質問してみよう