• 締切済み

VBA 別シート、別ブックへ条件一致で転記

先日もアンケートの結果入力について質問させて頂いたのですが、 アンケートの仕様が変わってしまい、自分で直そうとしたのですがうまくできず、すみませんがまた教えてください。。。 アンケートの結果を集計するため、入力用シートにデータを入力しています。 入力用シートの構造は、上部のヘッダ部分に、担当者、社名、発売日、商品名の4つの情報があり その下に設問が18問あり、設問の右のセルにチェックボックスがあって、 チェックあり、なしを入力していくようになっています。 チェックボックスの値は非表示のセルにリンクするようにしています。 となりのデータベースシートにその結果を転記していきたいのですが、 データベースシートにはあらかじめ多数の担当者、社名、発売日、商品名の情報が入っていて、 入力シートのヘッダ部分の4項目全てと一致する行に、アンケートの入力結果を転記したいです。 入力シート 担当者名 鈴木 会社名 A株式会社 発売日 11/21 商品名 りんご 設問1 チェックあり 設問2 チェックなし 設問3 チェックあり … 設問18 チェックあり データベースシート 担当者名 会社名 発売日 商品名 設問1 設問2 … 設問18 鈴木 B株式会社 10/30 なし 佐藤 C株式会社 12/5 ぶどう 高橋 A株式会社 11/1 いちご 鈴木 A株式会社 11/21 りんご ・・・・・・ 上記例ではデータベースシートの上から4行目のところに、設問1~18の結果を横に並べて転記したいです。 また、それとは別に、データベースシートと同じ構造の別ブックに同様にデータを転記していくマクロも知りたいです。(実行時にファイルを開いて、同じように4条件全部一致した行にデータを転記したい) 説明が下手で申し訳ないですが何卒お助け下さい。。 よろしくお願いいたします<(_ _)>

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

えっと。回答を貰っても,何が気にくわなかったのかプイッと閉じ逃げで去ってしまわれたご相談の,続きのご相談ですね。 それと前回も「具体的なマクロが教わりたいときは,なんて名前のシートのドコ番地のセルに何を記入してる」のか手抜きせず判るように情報提供して下さいってお話ししておきましたが,そういう所もスルーのままですね。これで2回お話ししましたから,次の3回目はもう大丈夫ですね? さて。 「具体的な」説明の書き方の例: シート名Sheet1のB1からB4セルに担当者名から商品名までを記載している 設問1、2,3…18のチェックボックスをそれぞれA11からA28セルにリンクしている フォームコントロールのコマンドボタンをシートに配置している (アクティブXコントロールのコマンドボタンではないので間違えない事) 各情報を、シート名Sheet2のA,B,C,D列を探してE列以右に順番に転記していく Sheet2は1行目をタイトル行として記入済みで、2行目から記入していく 手順: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro2()  dim r as long  dim LastRow as long  lastrow = worksheets("Sheet2").range("A65536").end(xlup).row  for r = 1 to lastrow   if worksheets("Sheet1").range("B1") = worksheets("Sheet2").cells(r, "A") _   and worksheets("Sheet1").range("B2") = worksheets("Sheet2").cells(r, "B") _   and worksheets("Sheet1").range("B3") = worksheets("Sheet2").cells(r, "C") _   and worksheets("Sheet1").range("B4") = worksheets("Sheet2").cells(r, "D") then    exit for   end if  next r  if r > lastrow then ’リストに該当が無かった場合  worksheets("Sheet2").cells(r, "A") = worksheets("Sheet1").range("B1")  worksheets("Sheet2").cells(r, "B") = worksheets("Sheet1").range("B2")  worksheets("Sheet2").cells(r, "C") = worksheets("Sheet1").range("B3")  worksheets("Sheet2").cells(r, "D") = worksheets("Sheet1").range("B4")  end if ’転記  worksheets("Sheet2").cells(r, "E") = worksheets("Sheet1").range("A11").value  worksheets("Sheet2").cells(r, "F") = worksheets("Sheet1").range("A12").value  worksheets("Sheet2").cells(r, "G") = worksheets("Sheet1").range("A13").value  worksheets("Sheet2").cells(r, "H") = worksheets("Sheet1").range("A14").value  worksheets("Sheet2").cells(r, "I") = worksheets("Sheet1").range("A15").value  worksheets("Sheet2").cells(r, "J") = worksheets("Sheet1").range("A16").value  worksheets("Sheet2").cells(r, "K") = worksheets("Sheet1").range("A17").value  worksheets("Sheet2").cells(r, "L") = worksheets("Sheet1").range("A18").value  worksheets("Sheet2").cells(r, "M") = worksheets("Sheet1").range("A19").value  worksheets("Sheet2").cells(r, "N") = worksheets("Sheet1").range("A20").value  worksheets("Sheet2").cells(r, "O") = worksheets("Sheet1").range("A21").value  worksheets("Sheet2").cells(r, "P") = worksheets("Sheet1").range("A22").value  worksheets("Sheet2").cells(r, "Q") = worksheets("Sheet1").range("A23").value  worksheets("Sheet2").cells(r, "R") = worksheets("Sheet1").range("A24").value  worksheets("Sheet2").cells(r, "S") = worksheets("Sheet1").range("A25").value  worksheets("Sheet2").cells(r, "T") = worksheets("Sheet1").range("A26").value  worksheets("Sheet2").cells(r, "U") = worksheets("Sheet1").range("A27").value  worksheets("Sheet2").cells(r, "V") = worksheets("Sheet1").range("A28").value end sub それと? >それとは別に、データベースシートと同じ構造の別ブックに同様にデータを転記していくマクロも知りたいです。 それは,単に転記先が違うだけで仕事は(=マクロは)一緒という事で良いんですね。 基本は「workbook("ブック名.拡張子").worksheets("シート名").…」のように,具体的にどのブックの具体的にどのシートの具体的にドコのセル番地と指定するだけです。

tmk0114
質問者

お礼

ありがとうございます!!! 思った通りにシート転記できました!!! また先の質問には回答者の皆様にお礼のコメントを入れたつもりだったのですが、うまく反映されていなかったのか、不愉快な思いをさせてしまったようで申し訳ございません。 あの後色々やってみたのですがうまくいかず、仕様も変わってしまったため再質問させて頂いた次第です。 すみませんがもう一つ教えて頂きたいのですが、別ブックに転記する際、そのファイルは作業のつど変わる可能性があり(中身の構造は同じです)、別の転記ボタンを作ってクリックするときに選択する方式にしようと思っています。 いま頂いたコードで書き換えて作ってみたのですがエラーになってしまい。。。 どうしたらよいでしょうか。ご教授いただけないでしょうか。 よろしくお願いいたします。

関連するQ&A

  • Excel 条件一致の別シートの行にデータを転記

    Excel初心者です。教えてください。 アンケートの集計をしているのですが、 単票形式の入力用シートに入っているデータを、隣のシートに転記していきたいと思っています。 入力シートには会社名と担当者、多数の設問があり、その回答は全てチェックボックス形式です。(非表示のセルにチェックボックスのチェック有り無しをリンクさせています) 隣のシートには既に会社名などの一覧があり、そこの社名が一致する行にそのチェックの有り無しの値を転記用ボタンで転記したいと思っています。 ●入力シート A株式会社 担当:佐藤 設問1・・・ チェックあり 設問2・・・ チェックなし 設問3・・・ チェックあり ・ ・ ・ ●転記先シート 社名 設問1 設問2 設問3 A株式会社 TRUE FALSE TRUE B株式会社 C株式会社 マクロでどのようにしたらよいでしょうか。 すみませんが教えてください<(_ _)> よろしくお願いいたします。

  • VBA シート上の転記について

    If 入力シート.Range("A4").Value = "会社" Then Dim 会社シート最終行 As Long 会社シート最終行 = 会社シート.Range("AA65536").End(xlUp).Row + 1 会社シート.Range("A" & 会社シート最終行).Value = 入力シート.Range("A4").Value 会社シート.Range("A" & 会社シート最終行).Value = 入力シート.Range("B4").Value VBAで上記のように入力していて、これに会社シートのA行を別のシートに転記したい場合どういう入力方法になるのでしょうか。 同じ公式で会社シートの所をsheet1、入力シートの所を会社シートと入力したのですがまったく反映されませんでした。 VBAを始めたばかりなので試行錯誤しながらしています。

  • 【エクセル】新しいブックにコピーするVBA

    急ぎで必要で、困ってます。 ”一覧”と”原本”という2つのシートがあります。 ”一覧”シートのA55~H78には、最大24個の商品の情報が縦に入力されています。 A列はメーカー名、B列は商品名・・・H列はフラグ(”0”か”1”のどちらか) ”原本”シートは1商品1枚の注文書みたいなものです。 G13に商品名、G16にメーカー名・・・といった情報を入力する欄が設けられています。 そのエクセルに対し、以下の処理を実行してくれるVBAを作りたいです。 新しいブックを開き、そこに”原本”シートをコピーする。但し、以下の条件がある。 ・”一覧”シートのH列のフラグが ”1”と入力されている商品の情報が入力されている状態の  ”原本”シートが新しいブックにコピーされる様にしたい。 例えば、”一覧”シートに、以下の情報が入力されているとします。 A55=株式会社斎藤 B55=鈴木チョコ ・・・ H=1 ↓ Hが1なので、G13=鈴木チョコ、G16=株式会社斎藤と入力されている”原本”シートを 新しいブックにコピーします。 この処理を繰り返して、H列に”1”と入力されている情報分の”原本”シートが 新しいブックにコピーされる様にしたいです。 以上、丸投げになってしまうので、大変恐縮なのですが、分かる方がいましたら返信お願いします。

  • VBA アンケートの転記

    はじめて質問します。Excel初心者です。 アンケートをExcelで作成し、送信ボタンを押すと、別シートの規定のセルへ転記されるようにしたいです。 回答はフリー入力です。 アンケートシート B3がタイトル B5にアンケート文1 B7に回答 B9にアンケート文2 B11に回答 B13にアンケート文3 B15に回答 集計シート B2にタイトル 1回目の送信ボタンで、C3~C5にアンケート文1~3までの内容を転記 2回目の送信ボタン以降は1列下にどんどん転記したいです。 また、送信ボタンを押す度に、集計シートは保存されるところまでできればいいのですが、どのようにすればよいでしょうか… アンケートは対象者にその場で開いてもらいます。 同時に複数人がさわることはないです。 よろしくお願いします。

  • VBAとデータの転記について

    今エクセル2003で、以下の上段画像のようなエクセルデータを作成しました。 上段(シート1)が、各商品に対する評価表なのですが、 そこに評価のあった件数が入力されています。 今、シート1の商品名から評価の不可までを、 VBAでシート2に以下のように転記をしたいのです。 先月はたまたま26件だったのですが、 毎月の商品の件数が、決まっていないので、連番記載とセルごとの処理 ループの使い方がよくわかりません。 評価欄は1件でも件数があれば、○印を転記して、空白はそのままで 転記したいのです。 データが多くなるにつれ手作業が大変になってきました。 VBAがまったくわからず、申し訳ありませんが よろしくお願いします。

  • 条件のあったシートへデータを転記するマクロ

    よろしくお願いします。 ブック内にシート名でマスターシートと在庫日報入力シートの2つがあります。在庫日報シートのA1に日付、A列3行目以降に商品コード、B列3行目以降に各商品名、F列3行目以降に各商品の在庫数量が入っており、毎日更新されます。マスターシートには縦A列3行目以降に日付が入っており、また横1行目(A1,B1,C1....)に各商品名が百以上記載されています。今まで、以下のマクロで在庫日報入力シートの在庫数量をマスターシートの対応するセルに転記していました。(縦の日付を検索し、横の商品名を検索し対応する場所に在庫数量を転記) Private Sub CommandButton1_Click() Application.DisplayStatusBar = True Dim LastR, idxR As Long, trgR, trgC If MsgBox("日付は正しいですか", vbQuestion + vbOKCancel) = vbOK Then With Worksheets("在庫日報入力") LastR = .Range("A65536").End(xlUp).Row trgR = Application.Match(.Cells(1, 1), Worksheets("マスター").Range("A:A"), 0) For idxR = LastR To 3 Step -1 trgC = Application.Match(.Cells(idxR, 1), Worksheets("マスター").Range("1:1"), 0) If IsNumeric(trgR) And IsNumeric(trgC) Then Worksheets("マスター").Cells(trgR, trgC + 1) = .Cells(idxR, 6) Else .Cells(idxR, 1).Interior.ColorIndex = 3 End If Application.StatusBar = "マスターシートに転記中・・・進行状況 " & idxR & "" Next idxR End With Application.StatusBar = False MsgBox "終了しました。(処理件数=" & LastR- 3 & "件)", vbOKOnly: Exit Sub End If End Sub 今までこれで良かったのですが、今度、マスターシートを削除して、各商品名毎にシートを作成します。そのため、それぞれの商品名シートに在庫日報シートのデータを転記するように変えたいのです。商品名シートはそれぞれA列3行目以降に日付が、となりのB列に在庫数が入るようになっています。 在庫日報シートの各商品に対応した商品名シートを見つけて、そのA列から在庫日報と同じ日付を見つけて、その行のB列に在庫日報シートの在庫数量を転記する。というものです。商品名シートは百以上あり名前は文字列です。 今までのマクロは教えてgooで教えていただきながら作りました。すいませんが、またご教授をお願いします。

  • データ転記。うまく転記できないシートがあります。

    エクセルのデータ転記について助けてください。 現在 エクセルで職場で使用する現金出納帳を作成中です。完成間近なのにつまずいてしまいました。 作成にもう長い時間かかっるので今週中になんとか仕上げたいのです。 (職場での周りの目がこわくって・・・) どうかどうかよろしくおねがいします。 *各シートの説明 【シート1(元帳)】は記入用シート(1年間の経費等の入力をします) A1は表題 2行目はタイトル行で B列:月日、C列:曜日、:D列:経費部門コード(以下部C)、E列:経費部門名(D列の部C入力時に他シートにあるデータベースからLOOKUPで抽出して表示するようにしてます) F、G列は手入力用の内訳や備考の列、H列:収入金額、I列:支払金額、J列:差引残高。(I・J列は転記必要なしです) データはB3(日付)から入力します。 データ表の範囲はとりあえず100行目まで(A1からJ100) 【シート2~シート16(シート名はD列の経費部門コード番号です)】 こちらが転記先シートです。 A1に部門コード、B2に部門コード名(A1のコードでデータベースより抽出)2行目はB列:月日、C列:曜日、D、E列:内訳、備考、F:支払金額 【シート17(経費部門コードのデータベース)】 部門番号と部門名を表にして 元帳で入力の際 ここからひっぱってくるようになっています。 番号は15種類(経理上不規則な番号):1・2・4・5・6・7・8・9・10・12・20・21・22・仕・給(これをシート名にしてます) *希望する完成仕様 元帳(シート1)に入力したデータが同時に部門C別シート(15種類)に必要な項目だけ転記される。必要な項目は上記のシート説明参照。 *現在の作成状況 ・元帳のシート A3に'=COUNTIF($D$3:D3,D3)&D3 以下 A列はA3をコピー ・15枚の部門番号のシート B3(転記初期行)に'=IF(ISERROR(VLOOKUP(ROW(元帳!A1)&$A$1,元帳!$A$1:$I$100,2,0)),"",VLOOKUP(ROW(元帳!A1)&$A$1,元帳!$A$1:$I$100,2,0)) C3,D3,E3,F3列はB3をコピーしLOOKUPの列番号を変更 *現在の状況と問題点 シート4・5・6・7・8・9・10・12・20・21・22はきちんと転記する。 シート1(部門C:1)は部門C:1と部門C:21のデータが転記されてしまう シート2 (部門C:2)は部門C:2と部門C:12と部門C:22のデータが転記されてしまう。 この2つのシートは 下1桁でひっぱってきてしまってるのは分かるのですが改善方法が分かりません。 どうかこの2シートがきちんと動く数式を教えていただけるでしょうか? 文章力不足のため 質問の理解にさぞ悩まれるでしょうがどうぞよろしくお願いします。 補足:01 02 04と 二桁でもしてみましたが反応は同じ。 よく分からなくて セルの表示変えても値は1・2・4になってしまうんです・・。 結局よく分かりませんでした。

  • 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データをコピーして加工する)ことにすら大苦戦しております。 なんとかお力を貸していただけないでしょうか? ご教示よろしくお願いいたします。

  • エクセルでシートは別ですが、同じセルの集計を行いたいのですが

    自治会のアンケートの集計に頭を悩ましています。 一つ目のシートに集計結果を入力出来る表を作りました。 組が10組有りますので、シートのコピーを繰り返して10組分を作成しました。 11シート目に各組の組別の質問毎の集計表を作成しました。 アンケートの設問が23問あり、選択も各問に3項目有ります。 最初は、集計表に各組の結果を入力すれば、自動的に集計表に転記出来るにと、集計表の入れたいセルをシフト+=を押して、その組のシートを開いて、集計結果のセルをクリックして、シフト+=+エンターを繰り返していましたが、余りにも回数が700回近く行わなければ成りません。 そこで教えて頂たいのですが、 10個のシートの同じセルを、各組に入力すれば集計表に自動的に同じ数字が入る様にする方法は有るのでしょうか? 宜しくお願い致します。 マクロはさっぱり判りませんので簡単に出来る方法をご教示頂きたくお願い致します。

  • EXCEL:形式が違う別bookへの転記

    マクロほぼ初心者のため、形式が違う別Bookへの転記について悩んでいます。 どなたかご教示いただけないでしょうか。よろしくお願いいたします。 (詳細) (1)売上実績表.xls の「比較」シート     A      C     D      E     F      G      H 1 商品No.                4月              5月 2      .  2009   2010    2011   2009   2010     2011 3  100     0    1000      800      0    1200   4  101     0      0      0     0      0 5  102     800   2050    4000   500    3000 6  103 (2)売上計画表.xls の「2011」シート     C     D      E       F     G  ・・・ 1  商品No.   4月     5月    6月 2   100      800    1000   1000 3   102     4000    5000    5000 4   107     1200    500     500               (1)の2011の列に毎月実績を入力していきます。 それを(2)に転記(上書き)させたいのですが、 (1)と(2)の形式が違うためうまくできません。 今考えているのは inputboxで月を指定して、 たとえば「4月」と入力すれば (2)のC列の商品No.と(1)のA列の商品No.をみて、 (1)E列の値を(2)D列に転記させ 「5月」と入力すれば (1)H列の値を (2)E列に転記させたいのですが・・・ 恥ずかしながら、下記のように列を指定して転記させる レベルでストップして、困っています・・・ Sub 転記() Dim LastRow As Long With Workbooks("売上実績表.xls").Sheets("比較") LastRow = .Range("D65536").End(xlUp).Row Workbooks("売上計画表.xls").Sheets("2011").Range("D2:D" & LastRow).Value = .Range("E3:E" & LastRow).Value End With End Sub どうかよろしくお願いいたします。

専門家に質問してみよう