• 締切済み

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

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

みんなの回答

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

>転記用ボタンで転記したい その通りに動作するマクロをボタンに登録、クリックして実行します。 「具体的なマクロの記載」を教えてほしいときは、「具体的なセル番地」とか「具体的なシート名」とかの目に見えるエクセルの情報を、手抜きせずにご相談に書くようにしてください。 「具体的な」説明の書き方の例: シート名Sheet1のA1セルに会社名を記載している 設問1、2,3のチェックボックスをそれぞれA3、A4、A5セルにリンクしている フォームコントロールのコマンドボタンをシートに配置している (アクティブXコントロールのコマンドボタンではないので間違えない事) 各情報を、シート名Sheet2のA,B,C,D列に順番に転記していく Sheet2は1行目をタイトル行として記入済みで、2行目から順繰り下に記入していきたい。 手順: ALT+F11を押してVBE画面を出す 挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim r as long ’どこに貼り付けたらいいのか調査  r = worksheets("Sheet2").range("A65536").end(xlup).offset(1).row ’転記  worksheets("Sheet2").cells(r, "A").value = worksheets("Sheet1").range("A1").value  worksheets("Sheet2").cells(r, "B").value = worksheets("Sheet1").range("A3").value  worksheets("Sheet2").cells(r, "C").value = worksheets("Sheet1").range("A4").value  worksheets("Sheet2").cells(r, "D").value = worksheets("Sheet1").range("A5").value end sub ファイルメニューから終了してエクセルに戻る シート1のコマンドボタンを右クリック、マクロの登録を開始、macro1を選んで登録する。

tmk0114
質問者

お礼

どうもありがとうございます! とても助かりました!!!

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

データの抽出ですね。 フィルターオプションと云う機能をご存知ですか。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter3.htm を参考にしてみてください。 最後に、マクロのコードがあります。 シートモジュールの Changeに組み込めば まるで関数が入っているような感じで抽出できます。

tmk0114
質問者

お礼

どうもありがとうございます! この機能は使ったことがなかったのでやってみます!!!

関連するQ&A

  • 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条件全部一致した行にデータを転記したい) 説明が下手で申し訳ないですが何卒お助け下さい。。 よろしくお願いいたします<(_ _)>

  • 教えてください!エクセルのシートからシートへ行単位で自動転記したいのです。

    エクセルで収支表を作成しています。 区分が入っているセルがあるのですが、その区分ごとに行単位で同ファイルの違うシートへ自動転記することは可能でしょうか? 日付 入金 code  社名  区分  ~  資料計  ~  立替計  ~  前払計  合計  残金 2/3   500   1056   ××  ●表  ~   3000   ~      0   ~     500   500    11100 2/6        1057   ××  △地  ~   500   ~     300    ~       0   800    10300 2/3  800   1056   ××  ★表  ~    1000   ~   200   ~       0   1200    9900 と、いうような収支表があります。 これを「●表」、「△地」、「★表」のそれぞれのシートに、行ごと、できれば合計の前までを、自動転記することができるでしょうか? ☆出来上がりイメージ シート名(●表) 日付 入金 code 社名 区分 ~ 資料計 ~ 立替計 ~ 前払計  2/3   500  1056  ××  ●表   3000      0       500 シート名(△地) 日付 入金 code 社名 区分 ~ 資料計 ~ 立替計 ~ 前払計  2/3   0    1057  ××  △地     500      0       300 シート名(★表) 2/3   500  1058  ××  ★表   1000       0       200 収支表に入力すれば、各シートに自動的に転記され、ぞれぞれの表が作成できるようにしたいのです。 まったくの初心者です。 いままでの質問結果を見ても自分の質問がどれに当たるのかもわかりませんので質問させていただきました。 具体的にどこのセルにどのようにすればいいのか、かみくだいてご説明いただけると大変助かります。 ここに書いた表もぐちゃぐちゃで、分かりずらいとは思いますが、どうぞよろしくお願いいたします。

  • データー表から別のシートに転記

    いつもお世話になります。 WINDOWS7 EXCELL2010 です。 データーを記入したシート「入力」から会社別のシート「請求書」に転記したい。 シート「入力」 1月~12月迄、C /G列を除くA~F列には手入力しています。 C2 =IF(B2="","",VLOOKUP(B2,顧客管理,2,FALSE)) & " " G2 =IF(F2="","",E2*F2) シート「請求書」 月初~月末 の月毎に請求内容を「入力」シートより参照図のように転記したい。 参照図でいうと 10月のみにまとめたい。 この請求書は 例えば A1 に 「0030」と入力すると A1 0030 A2 郵便番号 =" "&IF(A1="","",TEXT(VLOOKUP(A1,顧客管理,4,FALSE),"〒000-0000")) & "" A3 会社名 荒川商店 =" "&IF(A1="","",VLOOKUP(A1,顧客管理,3,FALSE)) & "" 当然のことながら A1 に 0041 と入力すると 「春日南九(株)」の請求書に早変わりし、 D15 E15 F15 G15  10/20 JF 250 4  という具合になればありがたいです。 御指導のほどよろしくお願いします。

  • エクセルの自動転記について

    画像を2つ添付していますので参考に見て下さい。 やりたい事は、入力シートと集計シートは別なのですが、12カ月分12枚の入力シートから1枚の集計シートへ転記。 担当者別・扱いNo・売上種類・計算した後の金額(単価×数量)を集計シートに転記して入れたい。 添付写真のように、担当別の枠に数字の若い順番で転記させる事は可能でしょうか? 毎回コピペでやっており、大変困ってます。 どなたか、頭の悪いわたしへ教えて下さい。

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

    よろしくお願いします。 ブック内にシート名でマスターシートと在庫日報入力シートの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で教えていただきながら作りました。すいませんが、またご教授をお願いします。

  • Excel VBA 別ブックを開かずに転記

    Excel2007のユーザーフォームについて教えてください。 ユーザーフォームを以下のように作成しました。 ■テキストボックス6つ テキストボックス2→件名 テキストボックス3→数 テキストボックス4→名前 テキストボックス5→備考1 テキストボックス6→備考2 ■コマンドボタンが1と3の2つです。 コマンドボタン1→転記と印刷 コマンドボタン3→終了 ■シートの構成  sheet"作成と一覧"   1行目を以下の項目で使用しています。  A1→番号(テキストボックス1を表示)  B1→件名(テキストボックス2を表示)  C1→数(テキストボックス3を表示)  sheet"印刷"  A1→番号(テキストボックス1を表示)  A2→件名(テキストボックス2を表示)  B2→数(テキストボックス3を表示)  A3→名前(テキストボックス4を表示)  A4→備考1(テキストボックス5を表示)  A5→備考2(テキストボックス6を表示) テキストボックスに入力した値を2つのシートにそれぞれ転記して、 シート"印刷"を2部印刷しています。 ここまで以下のコードで行いました。 Private Sub CommandButton1_Click() '入力値を作成と一覧シートに転記 行 = ActiveCell.Row 列 = ActiveCell.Column Cells(行, 列) = UserForm1.TextBox1.Value Cells(行, 列 + 1) = UserForm1.TextBox2.Value Cells(行, 列 + 2) = UserForm1.TextBox3.Value '入力値を印刷シートにに転記 Worksheets("印刷").Range("A1") = UserForm1.TextBox1.Value Worksheets("印刷").Range("A2") = UserForm1.TextBox2.Value Worksheets("印刷").Range("B2") = UserForm1.TextBox3.Value Worksheets("印刷").Range("A3") = UserForm1.TextBox4.Value Worksheets("印刷").Range("A4") = UserForm1.TextBox5.Value Worksheets("印刷").Range("A5") = UserForm1.TextBox6.Value 部数 = 2 Worksheets("印刷").PrintOut Copies:=部数, Collate:=True UserForm1.TextBox1.SetFocus Cells(行 + 1, 列).Select End Sub Private Sub CommandButton3_Click() '終了ボタンで値をクリアしてウィンドウを閉じる Dim Ctrl As Control For Each Ctrl In Controls If TypeName(Ctrl) = "TextBox" Then _ Ctrl.Value = "" Next Ctrl Unload Me End Sub 教えて頂きたい事なのですが・・・ コマンドボタン1の入力値を作成と一覧シートに転記の所なのですが、 アクティブセルではなく、常にA列の最後の値の次の空白行に転記するようにしたい場合、 どのように書き換えればいいのでしょうか? もう一点ですが、 別ブックにテキストボックス1から6が入力された一覧があります。 この別ブックを開かずに、 テキストボックス1に入力された番号を探して、 テキストボックス2から6に表示されるようにしたいのです。 うまく説明できないのですが・・・ 別ブックの名前は"たちつ" 別ブックは、あいうサーバーの かきくフォルダの中のさしすフォルダです。 ブック"たちつ"に"一覧"というシートがあります。 一覧のシートのD列の3行目以降には番号が入力されており、日々増えています。 テキストボックス1に入力された番号を、 一覧のD列から探し、 I列の値をテキストボックス2へ K列の値をテキストボックス3へ L列の値をテキストボックス4へ M列の値をテキストボックス5へ J列の値をテキストボックス6へ転記させたいのです。 同じブックの別シートを参照するときには Application.VLookupで出来たのですが、 マクロの記録でやってみても、解決できませんでした。 コードをご覧いただいてお分かりの通り、 VBA超初心者です。 ネットを見ながら試行錯誤している状況です。 コードの間違い等あるかもしれませんが、 ご教示よろしくお願いいたします。

  • HTA上データをExcelへ転記するには?

    HTAでレコードを条件検索するプログラムを作っています。条件によるレコード検索までは出来ているのですが、その結果の転記が出来ないでおります。 検索を実行すると指定した条件でDBの情報を取得し表示させます。 表示する際にHTA上にレコードの横へチェックボックスが作成されます。 HTA上に表示されるレコードですが、レコードの状態を確認するため必要最低限のものしか表示しないようにしています。 (ウィンドウサイズを出来るだけ小さく作りたかったため) select * from sheet1 where 陳列コード = 'B01'で検索を行いobjRS(1)、objRS(2)、objRS(3)、objRS(6)、objRS(7)というように全てのフィールドは表示させていません。 HTA上に表示をしExcelへ転記する必要があるものだけを確認したらチェックボックスにチェックをいれます。 転記を押したらHTA上に表示されている「商品C (objRS(2))」と「陳列C (objRS(3))」のフィールドをを元に再度SQLを発行させExcelに転記するというやり方です。 例:select * from sheet1 where 商品コード = 'A0001' and 陳列コード 'B1'のようにです。 要は、チェックボックスにチェックがついたものだけをSQLを発行しエクセルへ転記を行いたいのですがどのようにしたらいいのか・・・ ひょっとしたらHTAのオブジェクトを取得してHTA自分自身を操作??なんておもってやってみたのですが何故かHTAのプログラムだけ結果が返りません。 それかこの考え自体が間違いでしょうか?どなたかヒントで構いませんので力になっていただけないでしょうか? http://www.google.com/notebook/public/06577523275749879902/BDRomDAoQ8pekyuwj?hl=ja (似たような質問を昼間書いたのですが自分自身分かりづらかったので再投稿しました 削除が可能になりましたら古いのは消しますのでご了承ください)

  • 入力したデータをその都度別のシートに蓄積したい。

    お世話になります。 分不相応なのですが、教えてください。 売上や支払に関する明細を作るためにエクセルを使っています。 『シート1』 罫線を引いて実際の明細仕立てにして、  社名   品名1・数量1・金額1・・・   品名2・数量2・金額2・・・          合計金額 計算式も入れて、品番と数量が入ると 金額を算出するようにしています。 『シート2』 1行目には、社名・品名などの項目名を入れました。 1つの取引先に付き、1行分で シート1で入力したデータを転記したいと思います。 理想としては、シート1で1明細の入力が完了 →コマンドボタン(登録)を押す →シート2の2行目にデータが転記 これを繰り返してシート2の3行目、4行目と データを蓄積していく・・・感じです。 マクロの記録で、入力した内容を消去するボタンを作ったり 1行目だけ内容を転記させてみたり(そこで終了・・) 色々なキーワードで、それらしきサイトを検索してみたり、 初心者でも分かるマクロ&VBAみたいな本で調べてみたり・・ ちょっと行き詰ってきたので質問させて頂きました。 ユーザーフォームを作ってシートに転記する方法は見つけましたが シート1には計算式を結構盛り込んでしまったので、 フォームには手が届きそうにありません。 説明不足かもしれませんが、何か良いアイデアはないでしょうか。 マクロで解決できるのか、やっぱりVBAでやるしかないのか、 また何か良いサイトをご存知でしたらご紹介ください。 よろしくお願い致します。

  • エクセル2007:シート内のデータの自動転記

    Excle2007を使用しています。 シート1のデータをシート2に自動で転記したいと思っています。 シート1 作業件名ごとにその内容、作業者名が書いてある表。 1行ににつき作業1件 A列:日付 B列:作業件名 C列:内容 D列:作業者名 シート2 作業者ごとに従事した作業をまとめた一覧表で、ひとりにつき1ページ。 表の形式(見た目)はシート1とはまったく別のもの。 作業者ごとに空欄の表が既に作られており、 1ページ目:Aさん 2ページ目:Bさん という風に、1シートに改ページしながら全ての作業者について1ページずつ一覧表になっている。 1ページは25行を使用しており、 Aさん(1ページ目)は1~25行(Bさん(2ページ目)は26~50行)となる。 1ページ目の表のうち、シート1のデータを入れられる行は11~21行。 3件あれば3行使って残り8行は空欄ということになります 日付欄はシート2のA11~A21 件名欄はシート2のB11~B21 内容欄はシート2のD11~D21 シート2には、作業者の住所や生年月日など、シート1にない項目があらかじめ入力されている。 いつもはシート1を入力後に作業者基準で並べ替えをして印刷し、 シート2の該当する作業者のページに手打ちでデータ入力しています。 シート1のデータをシート2の該当箇所に転記するだけなので、シート1が完成した段階で シート2を自動で作れたら作業時間の短縮になると思い、考え始めました。 が、VBAに詳しくないため、どこからどう手をつけたらいいものかわかりません。 お詳しい方、お知恵をいただけましたらと思います。 不足情報等ございましたらご指摘いただけましたら補足をさせていただきますので どうぞよろしくお願いいたします。

  • 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を始めたばかりなので試行錯誤しながらしています。

専門家に質問してみよう