• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データー表から別のシートに転記)

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

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

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

  • ベストアンサー
  • 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