VB初心者の方へ!Excelでのデータの抽出と書き込み方法を教えてください

このQ&Aのポイント
  • ExcelのVBA初心者の方に向けて、Sheet1からデータの抽出とSheet2への書き込み方法を教えてください。
  • 具体的には、Sheet1のデータをSheet2で科目別に集計し、見積書としてまとめたい場合のマクロの作成方法について教えてください。
  • 質問者はVBの勉強を始めたばかりで、試した方法ではうまく処理できなかったため、知恵を貸していただきたいとのことです。
回答を見る
  • ベストアンサー

抽出→書込み? コピー→貼付? 教えてください。

VBの勉強中の初心者です。 Sheet1(科目別の集計抽出を行っている) U1:AC1は見出し ------------------------------------------ 果物|ブドウ|産地|........|計900円|(元データ列:U2:AC2) ------------------------------------------ ...... 果物|ミカン|産地|農家|....計800円|(元データ行:U71:AC140) ------------------------------------------ 野菜|......農家|3個|120円|計360円|(データ列:U141:AC220) ------------------------------------------ ...... 野菜|キャベツ|...|2個|200円|計400円|(データ列:U141:AC220) ------------------------------------------ 果物・野菜=科目とした場合、科目は12種類あり 列は+70で変化なしです。 この値を、規定の書式にのっとり Sheet2(科目別の見積書を作成) 科目別見積なので見積シ-トは12枚 ------------------------------------------    A   B  C  D ........ I 10 "空白" 産地 2個 ..... 12 ブドウ 農家名 ------------------------------------------    A   B  C  D ........ I 13 "空白" 産地 2個 ..... 14 ブドウ 農家名 ------------------------------------------ の様にまとめたいのですが、 1つの項目(ブドウ・ミカン等)に対して A列は奇数列に表示 B列のみ2行(産地「奇数列」:農家名「偶数列」)必要とします。 C列~I列までは偶数列に表示 項目は行1科目に対して70ですので、 A10~A149までです。 列はA~Iまです。 Loop ・.Offset・For~Next Sheet1からコピーして貼り付け Sheet2に直接記憶マクロ 等 などいろいろ試したのですが処理できないで困っています。 長々と書きましたが、 VBの勉強をはじめたばかりの素人です。 いろいろ調べたのですが自分の学習不足もあってかなかなか 回答に結びつかなかったので質問させてください。 皆様の知恵を貸して下さいよろしくお願いします。 方法は問いません。 Sheet2へうまくSheet1の内容を表示させるにはどのような マクロにすればよいか教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

見積もり表の構成を1行にするのであれば データ > フィルター > フィルターのオプション あたりでやれますが 2行構成にしてしまうとVBAになるでしょう 『Microsoft Scripting Runtime』に参照設定しておいて Sub MacroFruit()   dim arData, sv   dim dict as new Scripting.Dictionary   dim n as integer   dim oSrc as Range, oDest as Range   arData = Sheets("Sheet1").Range("V2:V71").Value   for n = 1 to UBound( arData,1)     if Dict.Exists( arData( n,1 ) ) = false then       Dict.add arData( n,1 ), arData( n,1 )     end if   next   Set oDest = Sheets("Sheet2").Range("A10")   for each sv in dict     for n = 1 to Ubound(arData,1)       if arData(n,1) = sv then         Set oSrc = Sheets("Sheet1").Range("V" & n + 1 )         oDest.Offset(0,1).value = oSrc.Offset(0,1).value ' 産地         oDest.Offset(0,2).Resize(1,7).value = oSrc.Offset(0,3).Resize(1,7).value         oDest.Offset(1,0).value = oSrc.value    ' 果物名         oDest.Offset(1,1).value = osrc.Offset(0,2) ' 農家         ' 次の転記位置に更新         set oDest = oDest.Offset(2)       end if     next   next End Sub といった具合です 他のシートに関しては   arData = Sheets("Sheet1").Range("V2:V71").Value   Set oSrc = Sheets("Sheet1").Range("V" & n + 1 )   Set oDest = Sheets("Sheet2").Range("A10") の部分の V2:V71や "V" & n + 1の +1、Sheets("Sheet2")などを修正してください

wata_oc3
質問者

お礼

redfox63さん回答ありがとうございます。 思っていた通りに処理出来ました。 素人の私にとってはこれから内容を一つづつ 理解してこれらからの勉強に役立てるのが課題として 残りました。 その他の作業を含め進めていく上で私自身で解決できない課題が ありましたら、その時はアドバイスをお願いします。 本当にありがとうございます。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

シート1の1行のデータをシート2に2行で表示したいというように、 思ったのですが。。。 どのセルのデータをどこに入れていくのか?今一つわかりません。 >コピーして貼り付け 値だけで良いのであれば 例: Sheets("Shhet2").Range("A1").Value = _    Sheets("SHeet1").Range("A1").Value とすれば、シート1のA1の値がシート2のA1に代入されます。 これではまずいのでしょうか?

wata_oc3
質問者

補足

n-jun回答ありがとうございます。 内容がうまく伝わらず表現不足といいますか.... 申し訳ありません。

関連するQ&A

  • Excel集計方法を教えてください!

    以下のようなシートがあります。 シート(1) A列、B列、C列、D列、E列 品名、商品名、A店、B店、C店 --------------------- 果物、いちご、8個、7個、6個 果物、ぶどう、2個、8個、2個 野菜、大根、3個、3個、2個 野菜、人参、2個、5個、8個 野菜、白菜、1個、2個、0個 肉、牛肉、2個、5個、10個 それを、以下のシート(2)のように集計するには、 シート(2)の各B列、C列、D列にどのような数式を埋めればいいか教えてください!! シート(2) A列、B列、C列、D列 品名、A店、B店、C店 --------------------- 果物、10個、15個、8個 野菜、5個、10個、10個 肉、2個、5個、10個

  • エクセル グループごとの検索について

    グループごとを検索し、その情報を縦列に表示したいのですが、悩んでおります。 横に表示するのは、以下の関数を使って出来たのですが、 =IF(ISNA(MATCH(COLUMN(A4)&$A4,sheet1!$E$2:$E$700,0)) これだと使い勝手が悪く、困っております。 例えば (sheet1)の情報を、 品種    品名   金額  産地    果物    りんご1 200 津軽 果物1 果物    りんご2 250 むつ 果物2 果物    みかん  300    果物3 果物    ぶどう  400    果物4 ーーーーーーーーーーーーーーーーーーーーーーーー 海外果物  パパイヤ 300    海外果物1 海外果物  アドカボ 100    海外果物2 海外果物  バナナ  130    海外果物3 ーーーーーーーーーーーーーーーーーーーーーーーー 野菜    なす   100    野菜1 野菜    にんじん 200    野菜2 野菜    きゃべつ 300    野菜3 野菜    大根   150 練馬 野菜4 野菜    大根2  180 京都 野菜5 (sheet2)において [A]又は[B]のある位置のセルに、品種(この場合、野菜)を打ち込むと、    [ A ] [ B ]なす   100        にんじん 200        きゃべつ 300        大根   150 練馬     大根2  180 京都   このように、品名と値段、産地が縦に並んで欲しいのです。 どうぞお知恵を貸して下さいませ。 宜しくお願いします。

  • マクロ 抽出してコピー貼り付けしたい

     以下のような、サイトでコードをみつけました。今ひとつ、分からないことがあります。お教え下さいませんか。 やりたい元のデーターと抽出先について sheet1の元データーはA列~G列のデーターです。sheet1のA列・B列・D列・E列・G列だけを抽出して、sheet2に表示させたいのです。なお、sheet1には、関数が入っています。 以下はサイトからのものです。 実行結果(1列目と3列目を抽出) Sub 列抽出() Dim データ範囲 As Range Dim 抽出列 As Variant Dim i As Long Set データ範囲 = ActiveSheet.Range("A1").CurrentRegion  抽出列 = Array(1, 3)  Sheets.Add.Name = "抽出" For i = 0 To UBound(抽出列)  データ範囲.Columns(抽出列(i)).Copy Sheets("抽出").Range("A1").Offset(0, i) Next i End Sub

  • Excelでこのような集計はどうしたらいいですか?困ってます!

    こんにちは。 以下のような集計を行いたいのですが、どうすればよいかわかりません。教えてください!! Sheet(1) A列、B列、C列 カテゴリ、数、品名 =================== 野菜、1、大根 野菜、2、ねぎ 果物、2、いちご 肉、3、牛肉 果物、1、りんご 肉、2、豚肉 ・ ・ ・ Sheet(2) A列、B列、 カテゴリ、金額 =================== 野菜、300 果物、300 肉、500 ・ ・ ・ 各品物は、100円均一とし、Sheet2でカテゴリ毎に必要な金額を求めます。Sheet1は、およそ1000行ほどあるので、一括で数式で求めたいのですが、どのような関数を使えばよいのかわかりません。 お願いします!

  • 別Bookのデータコピーについて

    Book違いのデータをコピー(Book1のSheet1のI,Jを埋めたい)したいと思います。 Book参考のSheet野菜は空白行が存在し、A3~A90までデータが入っています。 また、Sheet1 H列の名前はBook参考のSheet野菜のA列に必ず存在します。 Book参考はデスクトップにあり、自動で開ける方法にてお願い致します。 元 Book1のSheet1      H    I    J 3   トマト 4   きゅうり      ・      ・ 15   レタス Book参考のSheet野菜      A     B   C    D 3  アスパラガス 300  6/2   長崎県 4   いんげん  400  1/13   鹿児島県    5 6   きゅうり  200  11/6   宮崎県 53   トマト   250  2/26   島根県 90   レタス   300  7/7   佐賀県        ↓ Book1のSheet1      H    I    J 3   トマト   250  2/26 4   きゅうり  200  11/6      ・      ・ 15   レタス   300  7/7 となるように

  • エクセル 複数条件抽出について

    エクセル2013を使用しています。 データシートより複数条件に当てはまるデータを 別のシートへ必要な項目のみ抽出する方法(関数orマクロ)をお教え下さい。 データシート:A列からU列まで様々なデータが入力されている。 抽出条件:H列とN列 抽出する項目:C列・I列・M列・O列・Q列・R列・S列 (抽出する項目は増える可能性有) 複数条件の抽出はフィルタオプションで出来たのですが、 抽出が必要な項目を指定する方法が分かりませんでした。 宜しくお願いします。

  • Excel:シート間参照し置換したい

    初心者です。異なるシート間における表を参照し、置換の ような事がしたいのですが、VLOOKUPが使えるのでしょうか? やりたいのは、下記の通りです。 Sheet1のような表があります。 Sheet2のA列を参照し、Sheet1のB列を変換し、 Sheet3のような結果を得たいのです。 近似値もできるみたいなのでVLOOKUPを使おうと 思ったのですが、「含む」は論理値でどう指定すればいいか 分からず困っています。 そもそもVLOOKUPでできるかも疑問ですし... 教えてください、よろしくお願いします。 Sheet1 A列     B列         12345    りんご、みかん、イチゴ 67891    いんげん 23456    チョコ、あめ 67890    みかん、りんご 56789    あめ Sheet2 A列     B列 りんご    くだもの みかん    くだもの いちご    くだもの いんげん   野菜 チョコ    おかし あめ     おかし Sheet3 A列     B列         12345    くだもの 67891    野菜 23456    おかし 67890    くだもの 56789    おかし

  • VBAを使った、Excelでのシート間データ抽出

    はじめまして。みなさまどうか教えてください。 Sheet1にはA列に250行程、コードが存在します。 Sheet2にはA列(コード)からI列まで、そして1000行程データが存在します。 Sheet1にあるコードは重複はなく、Sheet2のコード内に必ず同じコードがあります。 Sheet2にも重複コードはありません。 そこでSheet1のコードを使い、Sheet2を検索し、同一コードのデータ(A列からI列の行すべて)を全て(250件分)、Sheet1のコード記載順(A1、A2、A3・・・・)で、Sheet3に抽出したいのです。 どうか、よろしくお願いします。

  • Excel シート毎の比較、抽出

    教えて頂きたい事が、二つあります。 sheetの名前が 「合計」「レモン」「みかん」「オレンジ」「ブドウ」「ひな形」とあります。 (1)各果物のSheetのセル(R7C6)に売上率が書いています(数値)  各果物のSheet毎に売上率を比べて  「合計」Sheetの同位置のセル(R7C6)に、一番高い売上率を表示させたい。 (2)もう一つは  各果物のSheetのあるセル(R7C7)に色が書いてあります(文字列)  書いてないこともあります。  「合計」Sheetの同位置のセル(R7C7)に各Sheetより抽出したデータを  表示させたい。    例えば    Sheet 「レモン」「みかん」「オレンジ」「ブドウ」「ひな形」    R7C7    黄    紫   (空欄)   群青  (空欄)    でSheet「合計」セル(R7C7)に         [黄 紫 群青]    と言うような具合。   「=レモン!R7C7&" "&みかん!R7C7&" "&オレンジ!R7C7&" "&ブドウ!R7C7」    とすると、スペース分が出てしまい、綺麗に表示されません。 今後フルーツが増えていく予定 (「合計」「レモン」「みかん」「オレンジ」「ブドウ」「メロン」「ひな形」) (「合計」「レモン」「みかん」「オレンジ」「ブドウ」「りんご」「メロン」「ひな形」) (「合計」「パイナップル」「レモン」「みかん」「オレンジ」「ブドウ」「りんご」「メロン」「ひな形」) なので間(合計が先頭でひな形が一番後ろ)に新しいsheetが入っても、対応できるような式がいいのですが・・・

  • エクセル☆抽出について

    エクセル初心者です。 抽出に関して教えて頂きたく、 どなたかご存知の方よろしくお願い致します。 【シート1】 (A) (B) (C) ・・・ (1) 赤1  15 (2) 青1  16 (3) 緑2  23 (4) 紫3  58 (5) 黒5  60 【シート2】 (A) (B) (C) ・・・ (1) 赤1   (2) 赤5   (3) 黄3 (4) 黒5   (5) 緑1   以上のようなシートが別々のデータがあるとします。 問(1) 【シート1】のA列データに、 【シート2】のA列のデータが含まれていたら、 【シート2】のC列へそのデータを抽出したい場合、 どのような操作や数式等を使用すればよいでしょうか。 問(2) 【シート1】のA列データに、 【シート2】のA列のデータが含まれていたら、 【シート2】のA列のデータに色をつけたい場合、 どのような操作や数式等を使用すればよいでしょうか。 条件付き書式なのかフィルタのオプション設定なのか、 色々と考えてみたのですが解りません。 どなたかご存知の方よろしくお願い致します。

専門家に質問してみよう