- ベストアンサー
Excelで離れたセルへのデータ貼り付け
- Excelで、データ表があり、横軸に年月、縦軸に品目名が入ったものです。データは順不同でアップデートされます。
- 必要なデータをオートフィルタを使って表示させ、一括でコピー&ペーストする方法があります。
- ExcelのバージョンはXP(2002)です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
次の様な方法は如何でしょうか? まず、「全く別のExcelファイル」に、新しいワークシートを作成して、そのワークシート名を例えば「元データ」等として下さい。 次に、Sheet1~Sheet3において、目標値を表示させる全てのセルに、次の様な関数を入力して下さい。 =IF(OR(INDEX($A:$A,ROW())="",INDEX($1:$1,COLUMN())=""),"",IF(COUNTIF(元データ!$A:$A,INDEX($A:$A,ROW()))*COUNTIF(元データ!$1:$1,INDEX($1:$1,COLUMN())),IF(VLOOKUP(INDEX($A:$A,ROW()),元データ!$A:$M,MATCH(INDEX($1:$1,COLUMN()),元データ!$1:$1,0)-COLUMN(元データ!$A$1)+1,FALSE)="","",VLOOKUP(INDEX($A:$A,ROW()),元データ!$A:$M,MATCH(INDEX($1:$1,COLUMN()),元データ!$1:$1,0)-COLUMN(元データ!$A$1)+1,FALSE)),"-")) その上で、基となる「データ表」をコピーして、元データシートのA1セルの所が「データ表」の左上の隅になる様に貼り付けますと、Sheet1~Sheet3の各シート上に目標値が表示されます。(この操作は、コピーしたセルの挿入ではなく、通常の貼り付けで行って下さい) 因みに、基となる「データ表」をコピーする際に、フィルターを使用して、必要となるデータのみをコピーした方が、「全く別のExcelファイル」のデータ量の節約になるかと思います。 この方法ならば、 >毎月ファイル名が異なります。 という問題に関しましても、前月の「全く別のExcelファイル」のコピーファイルを作成し、そのコピーファイルの元データシートの古いデータを全て消去して、今月のデータを貼り付けるだけで済む筈です。
その他の回答 (4)
- satoron666
- ベストアンサー率28% (171/600)
ちなみに、VBAとして回答しています。 >私の勘違いだといけないのですが、これだと「データ表からデータを貼り付ける」ではなく、 >「データ表にデータを貼り付ける」事になってしまわないですか? >データを『可視セルにのみ貼り付け』も可能ですか? 良くわかりません。 可視セルを貼り付けることができればよかったのではないでしょうか。 オートフィルターをかけ、 可視セルのコピー そして、2行あけて貼り付けしていけば良い話じゃないですか? 貼り付け現在位置を数え、 フィルター抽出結果が何件になったかを取得 Result=WorksheetFunction.Subtotal(3、Range(”A:A"))'A列の可視行を数えます。 Currentregonでもいいと思います(スペル合ってるか不明) やりたいことは未だよく分かっていないのですが、 B列が毎回入っている前提として考えると 1.オートフィルターで必要な部分のみ表示 2.可視セルをコピー 3.貼り付け位置の最終行を取得 (1回目ならA1とかにする) 4.可視セルを貼り付ける 5.B列に1列挿入(1回のみ) 6.目標、実績、差異と入力 これを繰り返せば良い話では? たぶんですが。
- chonami
- ベストアンサー率43% (448/1036)
>式の参照先を置換するという事でしょうか? はい。それでもいいと思います。問題ありますか? 日付によってファイル名が違うという事はその日付をどこかで参照させるようにしてINDIRECT関数などを使う事も可能でしょうし、元ファイルにする用のブックを作っておいてデータだけそのファイルに貼り付けるというような方法もあると思います。 工夫すればいくらでも方法はありますが。
お礼
地道に数式を入れていこうと思います。 ありがとうございました。
- chonami
- ベストアンサー率43% (448/1036)
商品名に被りがないなら、VLOOKUP関数とかでできないんでしょうか?
補足
参照するためのデータ表は、まとめたいExcelブックとは別のブックです。 また、そのデータ表のファイルネームは毎月違います。 式の参照先を置換するという事でしょうか?
- satoron666
- ベストアンサー率28% (171/600)
Excel2003の場合ですが、回答します。 Selection.SpecialCells(xlCellTypeVisible).Select '可視セルの選択 Selection.Copy Sheets(Worksheet_Name).Range("A1") '可視セルコピー こういう方法でしょうかね? オートフィルタは出来るということですので、 この方法で良いかと思います。 ただ、可視セル全て選択してしまっているため、 見出し部分の行を削除するか、 selectする範囲を変更するかで対応いただけるかと思います。 他にいい回答が出るかもしれませんが、 参考まで^^
補足
私の勘違いだといけないのですが、これだと「データ表からデータを貼り付ける」ではなく、 「データ表にデータを貼り付ける」事になってしまわないですか? データを『可視セルにのみ貼り付け』も可能ですか?
お礼
私自身が使うだけならば、VBAで良いのですが、 他の人が使うため、できれば数式だけで済まそうと思います。 ご回答ありがとうございました。