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

このQ&Aのポイント
  • データーシートの内容を別のシートに転記する方法について教えてください。
  • WINDOWS7 EXCELL2010を使用しています。データーシートの特定の範囲を別のシートに自動的にコピーしたいです。
  • 請求書作成のためにデーターシートから特定の情報を抜き出して別のシートに転記する方法を教えてください。
回答を見る
  • ベストアンサー

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

いつもお世話になります。 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  という具合になればありがたいです。 御指導のほどよろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

続いてお邪魔します。 補足の件について 2 小生の数式で 多すぎる引数・・・ と$1 の部分が反転してエラーが出ます =IFERROR(INDEX(入力!$A:$F,SMALL(入力!$H:$H,ROW(A1)),MATCH(IF(D$12="納入日", "日付",IF(D$12="納品名","商品",IF(D$12="単価","",IF(D$12="数量","",D$12))), 入力!$1:$1,0)),"") 詳しく検証していませんが、数式を拝見すると作業列をH列に設けて、 INDEXの配列(範囲)をA~F列にしているというコトですね? その場合は「請求書」Sheetで列方向にフィル&コピーするのは「数量」のG列までとなり H列はご自身で数式を入れる必要があると思います。 「請求書」SheetのC15セルの数式は前回と一緒です。 D15セルに =IFERROR(INDEX(入力!$A:$F,SMALL(入力!$H:$H,ROW(A1)),MATCH(IF(D$12="納入日","日付",IF(D$12="納品名","商品",D$12)),入力!$1:$1,0)),"") としてG列までコピー! H15セルの数式は単に =IF(C15="","",F15*G15) となるはずです。 ※ 結局INDEX関数の列番号を取得する場合、「検査値」が異なっている時だけ 「入力」Sheetの項目名を「検査値」にすれば良い!というコトです。 (両Sheetの項目が同じ場合はIF関数の「偽の場合」にそのまま15行目を「検査値」にします。 ※ 今回は一つの数式で処理しようとしたためにあのような数式にしましたが、 1列ずつコツコツ数式を入れればもっと簡単な数式になります。 C15セルはそのまま D15セルは =IFERROR(INDEX(入力!A:A,SMALL(入力!H:H,ROW(A1))),"") E15セルに =IFERROR(INDEX(入力!D:D,SMALL(入力!$H:$H,ROW(A1))),"") としてH15セルまでコピー! 最後にC15~H15セルを範囲指定 → H15セルのフィルハンドルで下へコピー! この場合は、両Sheetの項目名は一切気にすることはありません。 列合わせだけ間違いなく行えば、この方が簡単かもしれませんね。m(_ _)m

dorasuke
質問者

お礼

有難うございます。 お陰様でできました。 ただ勝手にですが下記のように変更させて戴きました。 H2 に =DATE(H3,H4,1) H4を10 とか 11 に変えて月毎の集計に対応できるようにしました。 =IF(AND(B2=請求書!A$1,MONTH(A2)=MONTH(TODAY())),ROW(),"") を ※小生の変更の数式 =IF(AND(B2=請求書!A$1,MONTH(A2)=MONTH($H$2)),ROW(),"") に

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 投稿後大きな間違いに気づきました。 >参照図でいうと 10月のみにまとめたい の部分を見逃していました。 とりあえず「今日」の日付の月のデータのみ表示するとします。 一気に!というより↓の画像のように作業用の列を設けるのが簡単だと思います。 画像では作業列I2セルに =IF(AND(B2=請求書!A$1,MONTH(A2)=MONTH(TODAY())),ROW(),"") という数式を入れずぃ~~~!と下へコピーしています。 そして「請求書」SheetのC15セルの数式は前回のままでOKです。 D15セルの数式を =IFERROR(INDEX(入力!$A:$G,SMALL(入力!$I:$I,ROW(A1)),MATCH(IF(D$12="納入日","日付",IF(D$12="納品名","商品",IF(D$12="小計","金額",D$12))),入力!$1:$1,0)),"") にしてください。 (今回は配列数式ではありません) その後の操作方法は前回同様です。 作業列が目障りであれば非表示にしておきます。 どうも失礼しました。m(_ _)m

dorasuke
質問者

補足

ご回答誠にありがとうございます。 再度ご指導いただけないでしょうか 1 変更 下記数式をI2セルから H2セルに変更しました。 画像では作業列I2セルに =IF(AND(B2=請求書!A$1,MONTH(A2)=MONTH(TODAY())),ROW(),"") という数式を入れずぃ~~~!と下へコピーしています。 2 適用済み C15 には そのまま適用済み   「請求書」SheetのC15セルに =IF(D15="","",ROW(A1)) 3 補足及び質問 D15セルの数式を =IFERROR(INDEX(入力!$A:$G,SMALL(入力!$I:$I,ROW(A1)),MATCH(IF(D$12="納入日", "日付",IF(D$12="納品名","商品",IF(D$12="小計","金額",D$12))),入力!$1:$1,0)),"")   を      小生の変更(ご指摘で項目名が違うのを今気が付きました) =IFERROR(INDEX(入力!$A:$F,SMALL(入力!$H:$H,ROW(A1)),MATCH(IF(D$12="納日", "日付",IF(D$12="納品名","商品",IF(D$12="単価","",IF(D$12="数量","",D$12))), 入力!1:$1,0)),"")   ※下記の部分を変更しました。   ~1入力!$A:$G を 入力!$A:$F に変更   ~2 IF(D$12="小計","金額" を IF(D$12="単価","" に変更(数式を入れている)   ~3 IF(D$12="数量","" を追加 と以上で2つ補足及び質問させていただきます。 1 小生の変更は正しいのでしょうか。 というのは シート「入力」 と シート「請求書」 の項目名が違うときはそれぞれに項目名を 入れて同じときは省いていいのかです。 例えば D$12="単価","単価" の単価を  D$12="単価","" ように 2 小生の数式で 多すぎる引数・・・ と$1 の部分が反転してエラーが出ます =IFERROR(INDEX(入力!$A:$F,SMALL(入力!$H:$H,ROW(A1)),MATCH(IF(D$12="納入日", "日付",IF(D$12="納品名","商品",IF(D$12="単価","",IF(D$12="数量","",D$12))), 入力!$1:$1,0)),"") 宜しくお願いします。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 質問文の途中は無視させていただいて、 アップされている画像で、上側データを下側のように表示させればよい!という解釈です。 「入力」Sheetと「請求書」Sheetの項目名が異なっているようですので・・・ まず、「請求書」SheetのC15セルに =IF(D15="","",ROW(A1)) 次にD15セルに =IF(COUNTIF(入力!$B:$B,$A$1),IFERROR(INDEX(入力!$A$1:$G$3000,SMALL(IF(入力!$B$1:$B$3000=$A$1,ROW(A$1:A$3000)),ROW(A1)),MATCH(IF(D$12="納入日","日付",IF(D$12="納品名","商品",IF(D$12="小計","金額",D$12))),入力!$1:$1,0)),""),"") これは配列数式になりますので、Ctrl+Shift+Enterで確定! D15セルのフィルハンドルでH15セルまでコピー! 最後にC15~H15セルを範囲指定 → H15セルのフィルハンドルで下へコピー! D列の表示形式は「日付」にして完了です。m(_ _)m

関連するQ&A

  • EXCEL2003 別シートからの転記

    EXCEL2010を使っていますが他の方が2003を使っているので保存の時にファイルの種類を97-2003ブックにしています。 注文書一覧を作成し各シートの注文書にVLOOKUPを使いNo.が同じなら転記する式を入れています。(画像参照) VLOOKUP($AC$2,注文書!$A$4:$H$33,3,FALSE)&"" 1~30シートの注文書の金額を注文書一覧に転記する方法がわからなくて困っています。 IF('1'!E9:F10="","",'1'!E9:F10)と式を入力したのですが#VALUE!となってしまいます。 教えていただけないでしょうか?

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

    エクセルのデータ転記について助けてください。 現在 エクセルで職場で使用する現金出納帳を作成中です。完成間近なのにつまずいてしまいました。 作成にもう長い時間かかっるので今週中になんとか仕上げたいのです。 (職場での周りの目がこわくって・・・) どうかどうかよろしくおねがいします。 *各シートの説明 【シート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になってしまうんです・・。 結局よく分かりませんでした。

  • EXCEL 2003にて予定表を作成しています。

    EXCEL 2003にて予定表を作成しています。 祝日を、VLOOKUP関数にて表示しました。 =VLOOKUP(A5,$F$5:$G$20,2,FALSE) エラー( #N/A )を非表示にするための関数を 入力するも、上手くいきません。図添付 =IF(ISERROR(VLOOKUP(A5,$F$5:$G$20,2,FALSE),"",VLOOKUP(A5,$F$5:$G$20,2,FALSE)) 「入力した数式は正しくありません」と表示されます。 正しい数式を教えてください。よろしくお願いします。

  • 【ExcelVBA】顧客別に抽出データをシート転記

    現在、顧客毎の支払い明細をExcelで自動発行できるものを作っています。 独学で、以下の状態までは作成できたのですが、その後、どうすれば良いのか分かりません。 [入力シート] ※以下、項目名はA6:O6に記載。 A=No.       F=科目名       K=該当期間 B=顧客ID    G=業者名       L=本体金額 C=顧客名    H=摘要【抜粋】    M=消費税 D=大項目    I=摘要         N=合計 E=勘定科目   J=説明         O=計上月 上記[入力シート]内の「C=顧客名×O=計上月」を抽出条件としたフィルタオプションで転記 というコードは、下記で成功しました。 ※コード内の「顧客テーブル=入力シートの全データ」。「Q_抽出条件=顧客名×計上月」の条件 ---------------------------------- Sub 必要なフィールドのみを転記() Dim myTable As Range, myQuery As Range, taegetRnage As Range Set myTable = Worksheets("入力Form").Range("顧客テーブル") Set myQuery = Worksheets("入力Form").Range("Q_抽出条件") Set targetRange = Worksheets("必要項目のみ転記").Range("b3:l3") myTable.AdvancedFilter xlFilterCopy, myQuery, targetRange End Sub ---------------------------------- また、顧客名毎にシート作成し、転記ということも以下コードで成功しています。 ※コード内の「myList = Array("顧客A","顧客B","顧客C"・・・・・・・・・・)」は、顧客数分、名前を記載してあります。 ---------------------------------- Sub 物件毎に転記() Dim myTable As Range, mysheet As Worksheet, i As Integer Dim myList() myList = Array("顧客A","顧客B","顧客C"・・・・・・・・・・) Set myTable = Worksheets("入力Form").Range("顧客テーブル") For i = o To UBound(myList) Set mysheet = Worksheets.Add(after:=Sheets(Sheets.Count)) mysheet.Name = myList(i) & "_支払明細" With myTable .AutoFilter 3, myList(i) .Copy mysheet.Range("a2") .AutoFilter End With mysheet.Range("a2").CurrentRegion.EntireColumn.AutoFit Next End Sub ---------------------------------- まず、顧客数分の抽出先(転記先)明細シートを用意し、必要な項目名だけを 記載しておくので、そこに「顧客名」×「計上月」の抽出条件で抽出された内容を 顧客別に指定シートに、転記したいのです。 ※「顧客名」で転記先シートを予め指定できるのであれば、抽出条件は「計上月」だけで構いません。 顧客数が30件程あり、毎月、入力シートに売上データは追記されていきます。 その蓄積されていくデータの中から、一括で「(1)計上月指定 (2)顧客名別の指定シートに該当データのみを転記 (3)顧客名に該当する転記先シートがなければ、新しくシートを作成した上で転記」 という作業を行いたいと考えています。 ※(3)は、Want条件なのでなくても大丈夫です。 あまりVBAの知識がない為、コードの記載方法など詳細に教えていただければ幸いです。 何卒よろしくお願い致します。

  • データー表から月日毎に振分をするには

    いつもお世話になります。 WIN7 EXCELL20010 です。 参照図で説明させていただきます。 UserFormを介して「記入」シートの B列に 日付  02/08 C列に ID   011-0002 M列に 体温  36.5 N列に 最高血圧 125.0 O列に 最低血圧  79.0 P列に 脈拍 63.0 Q列に 担当 橋 を入力します。 例えば上記のシート「記入」に入力されたデーターを Sheet「 2月」に     (※1月~12月 までのシートがあります) K6 = 36.5 K7 = 125.0 K8 = 79.0 K9 = 63.0  というようにそれぞれに振分をする関数をご指導いただけませんでしょうか。 よろしくお願いします。 ※She et「2月」B6 には下記の関数が入っています。 (滅多にないのですがご利用様名の同性同名の管理上) =IF(ROWS($A$6:$A6)>COUNTIF(記入!$F:$F,"*?◆"&TEXT($D$4,"yyyy/mm")&"/*?◇★*?"),"",LEFT(VLOOKUP("*?◆"&TEXT($D$4,"yyyy/mm")&"/*?◇★"&ROWS($A$6:$A6),記入!$F:$F,1,FALSE),FIND(IF(COUNTIF(記入!$F:$F,INDEX(記入!$D:$D,MATCH("*?◆"&TEXT($D$4,"yyyy/mm")&"/*?◇★"&ROWS($A$6:$A6),記入!$F:$F,0))&" #2*"),"◆"," #"),VLOOKUP("*?◆"&TEXT($D$4,"yyyy/mm")&"/*?◇★"&ROWS($A$6:$A6),記入!$F:$F,1,FALSE))-1))

  • 2sheet間のVLOOKUPのデータの転記

    sheet1 sheet2 A1 B1 C1 D1   E1  A1  B1  C1 D1  E1  F1 姓 名 会社 メルアド   アドレス姓 名  会社  メルアド TRIM(B1&C1&D1&E1) ・  ・  ・         ・    ・   ・  ・    ・ ・  ・  ・         ・    ・   ・  ・    ・ ・  ・  ・         ・    ・   ・  ・    ・ 上記の様にデータがありsheet2のアドレスをsheet1のE1に転記したいと思っています。 現在、Sheet1でのE1に=Vlookup(TRIM(A1&B1&C1&D1),Sheet2!A1:F100!A:A,0)と記述していますが、#NAMEなどのエラーが出てしまいます。 どうしたらデータの転記が出来るでしょうか? 何卒、宜しくお願い致します。

  • セルの内容を別のシートのセルに呼び出す。

    Sheet1のあるセルを「セルの書式設定」の表示形式の「ユーザー定義」で [=1]"○";[=2]"◎";"有"  と設定し、  1や2や3で「○」 「◎」 「有」 を呼び出すように定義し、 1を入力すると○、2を入力すると◎・・・ が問題なく返って来ているのを確認した上で、 =IF(ISERROR(VLOOKUP(A2,Sheet1!$A$4:$C$33,3,FALSE)),"",IF(VLOOKUP(A2,Sheet1!$A$4:$C$33,3,FALSE)=0,"",VLOOKUP(A2,Sheet1!$A$4:$C$33,3,FALSE))) 以上のような式を入れて、そのセルの内容をSheet2のセルに呼び出したところ、 帰って来た値が「○」 「◎」 「有」ではなく、入力した1,2、3しか返って来ません。 解決方法があれば、どなたかご教授願えないでしょうか。 よろしく、お願い致します。

  • データが詰まったシートから、別のシートに空の行を入れて転記するには?

    シート1のA1に1,A2に2,A3に3,A4に4,A5に5と入力。 シート2にシート1のデータを次のような形で転記するにはどうしたらよいで しょうか? A1に1(=Sheet1!A1),3行空けてA5に2(=Sheet1!A2),3行空けてA9(=Sheet1! A3)に。 といったように3行空けて転記したいのですが。

  • 入力したデーターを別シートに ~その2

    入力したデーターを別シートに ~その2 いつもお世話になります。 Windows XP EXCELL2003 です。 http://okwave.jp/qa/q5949642.html でご指導いただき再度詳細にテストした結果、不具合が出ました。 ご指導いただいたそのときは6月度のみではうまくいきました。 1  NO3 Sheet2のB6: =IF(SUMPRODUCT((Sheet1!$A$1:$A$100=$A6)*(Sheet1!$C$1:$C$100<=DATE($A$1,$A$2,COLUMN(A6)))*(DATE($A$1,$A$2,COLUMN(A6))<=Sheet1!$D$1:$D$100)),"○","") 右にコピー,下にコピー。 「問題点」 退場日が泊数に含まれます NO3 の画像で言うと 201(A6) B6~E6  F6が1泊多い A2 6月1日~6月3日  (2泊)  A4 6月8日~6月11日  (3泊)  A6 6月3日~6月5日 (2泊)  2  NO2 数式を =IF(OR($A6="",COUNTIF(Sheet1!$A$2:$A100,$A6)=0),"",IF(AND(B$4>=INDEX(Sheet1!$C$2:$C$100,SMALL(IF(Sheet1!$A$2:$A100=$A6,ROW($A$1:$A$99)),1)),B$4<INDEX(Sheet1!$D$2:$D$100,LARGE(IF(Sheet1!$A$2:$A$100=$A6,ROW($A$1:$A$99)),1))),"○","")) 「問題点」 泊数はいいのですが12ヶ月分シートがあって「記入」で 1月 2月 3月と順次入力している内は良いのですがその先を追加で入力するとなぜか 4月~12月のシートには1日~30若しくは31日に○が印されます。 再度確認の意味で御願いしたいのは 部屋の泊の管理をしたい。 例 1「記入」 A2(201) 06/01~06/03 2泊 A3(201) 06/03~06/06 3泊 の値が「6月」シートB6~F6に ○ 印がつくこと 2各月シートの A6~は 201 202 203という具合に予め入力しています。 ※ 参照は画像を参照下さい。 お手数ですがご指導いただきたく宜しく御願いします。

  • マクロで別シートの検索と別シートへの転記

    windows7、エクセル2013です。 Sheet1のA列の値を上から順に、Sheet2のA列内を検索し 同じ値が有ればその値を Sheet3のB列の5行目から順番に転記したいです。 Findを使ってうまくできないので Countifを使いましたが、駄目でした。 関数で可能なら関数でもいいのですが、教えていただきたいです。 よろしくお願いします。 Sub 抽出転記() Dim 検索行 Dim 検索値 Dim 答 Dim 入力行 入力行 = 5 For 検索行 = 3 To 200 検査値 = Worksheets("Sheet1").Cells(検索行, 1) If Worksheets("Sheet2").Columns("A").CountIf(検索値) <> 0 Then 答 = 検索値 Worksheets("Sheet3").Cells(入力行, 2) = 答 入力行 = 入力行 + 1 End If Next 検索行 End Sub

専門家に質問してみよう