- ベストアンサー
エクセルVBAの問題?
Excelのファイルがあります。 例として sheet1: ********************************************* Jan-O4 Feb-04 Mar-04 Apr-04 a1-------b1------c1-----d1 a2-------b2------c2-----d2 a3-------b3------c3-----d3 May-04 Jun-04... e1-------... e2-------... e3-------... ********************************************* (注:-は空白の事です、04は2004年の事です。) sheet2: ********************************************* Feb-04 Mar-04 Apr-04 May-04 b1------c1-----d1------e1 b2------c2-----d2------e2 b3------c3-----d3------e3 Jun-04 July-04 ...----... ...----... ...----... **************************************** (注:-は空白の事です。) sheet1からsheet2ができるようにしたいです。 (毎月同じようなの操作の繰り返しです) すなわち、来月になるとsheet1の最初の月のデータを削除して、残りのデータをsheet2にコピー、最後sheet2に新しい月のデータを入力する、データの量はいつも半年のデータです、表のデザインも同じです。 ただ、実際データの量が多いので、普通のセルコピー、シートコピーのようなのやり方、時間が掛かります。 ほかにいい方法がありますか?(VBAなど?) 教えてください! できれば、サンプルも欲しいです。 お願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 ちょと変則な表ですね。 一般的には列方向に半年分とりますよね。 ま、それはそうとして、 Sheet1とSheet2を交互に使うことはないと思いますよ 月が替わったらSheet1をSheet2にコピーして Sheet1の内容を移動削除して新しい月のデータもSheet1に入力すればいいですよね。 要するにSheet2は前月までデータ保存用にするということです。 方法は色々あると思いますが、一案。 (Sheet1)のレイアウト ------A-------B-------C-------D-------- 1--Jan-O4--Feb-04--Mar-04--Apr-04 2----a1------b1------c1------d1 3----a2------b2------c2------d2 4----a3------b3------c3------d3 5--May-04--Jun-04---------------------- 6----e1------f1----- 7----e2------f2----- 8----e3------f3----- --------------------------------------------- Sub Test() Sheets("Sheet1").Select Cells.Copy Destination:=Sheets("Sheet2").Range("A1") Range("B1:D4").Copy Destination:=Range("A1") Range("A5:A8").Copy Destination:=Range("D1") Range("B5:B8").Copy Destination:=Range("A5") Range("B5:B8").ClearContents End Sub ---------------------------------------------- (1)Sheet1を全てSheet2へコピー (2)Feb~Apr(B1:D4)を、A1:C4 へコピー (3)May(A5:A8)を、D1:D4 へコピー (4)Jun(B5:B8)を、A5:A8 へコピー (5)Jun(B5:B8)を新しいデータ入力用にクリアー 上記のコピーとは移動と同じ意味。 また実際の各月行数は適当に変更してください。 以上。
その他の回答 (5)
月のデータですが、各月共同量のデータ数でしょうか? 又、固定数でしょうか?変動数でしょうか?
お礼
固定です。
シート2つも要らないような気がします。 要は次の月になるとシート上から最初の列が削除されればいいのですよね? 条件判断で開いた日が先頭列の月より大きければ列削除するようなものに すればよろしいのでは? 質問者様自身がVBAといわれているので、それなりのことはできるものと 判断します。単純な記述で済むと思いますよ。
お礼
再度のご回答、ありがとうございます。 sheet1で書いてある通りですが、最初の月(Jan)の下に月(May)のデータもあるので、列の削除だけでは、問題の解決ができないです。
- onlyrom
- ベストアンサー率59% (228/384)
NO2です。 SuperMildさん、すみません。 だらだら書いてるうちにカブってしまいました。(^^;;
お礼
補足です。 今月がsheet1からsheet2変更の操作です。 来月になるとこの操作の繰り返し、つまり、先月のsheet2が操作の元(sheet1に)になります。
- onlyrom
- ベストアンサー率59% (228/384)
こんにちは。 VBAですと簡単にできると思いますが、質問を読んでちょっと気になるところがあります。 >来月になるとsheet1の最初の月のデータを削除して >残りのデータをsheet2にコピー、 >最後sheet2に新しい月のデータを入力する これだとSheet1へのデータ入力がありませんので、 Sheet1に現在入っているデータは数ヶ月後にはなくなってしまうではありませんか? その辺りのことをも少し詳しく、順を追って質問された方がいいと思いますが....(^^;;;
お礼
ご回答ありがとうございます。 古いデータはそのまま、コピーして使います。新しい月のデータに関しては、ほかの計算結果から、手操作で貼り付けます。毎月はこのようなの繰り返しです。
やりたいことがイマイチよくわかりません。 シート1から1月が無くなったときは7月のデータはどこからくるのでしょうか? サンプル?どこまで出来ているのかを掲示して下さい。分からない部分を 聞く方が良いかと思いますよ。まさか丸投げじゃないですよね。 いずれにせよもう少し分かりやすく書いてもらえないでしょうか?
お礼
ご回答ありがとうございます。 古いデータはそのまま、コピーして使います。新しい月のデータに関しては、ほかの計算結果から、手操作で貼り付けます。
お礼
すごいです。 助かりました。 どうも、ありがとうございます。