• ベストアンサー

エクセル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など?) 教えてください! できれば、サンプルも欲しいです。 お願いします。

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.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)を新しいデータ入力用にクリアー 上記のコピーとは移動と同じ意味。 また実際の各月行数は適当に変更してください。 以上。

2003saki
質問者

お礼

すごいです。 助かりました。 どうも、ありがとうございます。

その他の回答 (5)

noname#123709
noname#123709
回答No.5

月のデータですが、各月共同量のデータ数でしょうか? 又、固定数でしょうか?変動数でしょうか?

2003saki
質問者

お礼

固定です。

noname#123709
noname#123709
回答No.4

シート2つも要らないような気がします。 要は次の月になるとシート上から最初の列が削除されればいいのですよね? 条件判断で開いた日が先頭列の月より大きければ列削除するようなものに すればよろしいのでは? 質問者様自身がVBAといわれているので、それなりのことはできるものと 判断します。単純な記述で済むと思いますよ。

2003saki
質問者

お礼

再度のご回答、ありがとうございます。 sheet1で書いてある通りですが、最初の月(Jan)の下に月(May)のデータもあるので、列の削除だけでは、問題の解決ができないです。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

NO2です。 SuperMildさん、すみません。 だらだら書いてるうちにカブってしまいました。(^^;;

2003saki
質問者

お礼

補足です。 今月がsheet1からsheet2変更の操作です。 来月になるとこの操作の繰り返し、つまり、先月のsheet2が操作の元(sheet1に)になります。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

こんにちは。 VBAですと簡単にできると思いますが、質問を読んでちょっと気になるところがあります。 >来月になるとsheet1の最初の月のデータを削除して >残りのデータをsheet2にコピー、 >最後sheet2に新しい月のデータを入力する これだとSheet1へのデータ入力がありませんので、 Sheet1に現在入っているデータは数ヶ月後にはなくなってしまうではありませんか? その辺りのことをも少し詳しく、順を追って質問された方がいいと思いますが....(^^;;;

2003saki
質問者

お礼

ご回答ありがとうございます。 古いデータはそのまま、コピーして使います。新しい月のデータに関しては、ほかの計算結果から、手操作で貼り付けます。毎月はこのようなの繰り返しです。

noname#123709
noname#123709
回答No.1

やりたいことがイマイチよくわかりません。 シート1から1月が無くなったときは7月のデータはどこからくるのでしょうか? サンプル?どこまで出来ているのかを掲示して下さい。分からない部分を 聞く方が良いかと思いますよ。まさか丸投げじゃないですよね。 いずれにせよもう少し分かりやすく書いてもらえないでしょうか?

2003saki
質問者

お礼

ご回答ありがとうございます。 古いデータはそのまま、コピーして使います。新しい月のデータに関しては、ほかの計算結果から、手操作で貼り付けます。

関連するQ&A

  • Excelで表のセルの操作

    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-------... ********************************************* (注:-は空白の事です。) 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に新しい月のデータを入力する、データの量はいつも半年のデータです、表のデザインも同じです。 ただ、実際データの量が多いので、普通のセルコピーのようなのやり方、時間が掛かります。 ほかにいい方法がありますか?教えてください! できれば、サンプルも欲しいです。 お願いします。

  • マクロで条件に不一致なら空白セルを挿入方法

    初めまして最近仕事でログ処理用のマクロを作成しているのですが、 マクロ初心者で、こんな場合どうしたらよいでしょうか? 教えてください。よろしくお願いします。 処理前 A列 B列 C列 jan ConnectTime feb 空白 JST mar 空白 ConnectTime apr 空白 JST may 空白 ConnectTime jun 空白 ConnectTime 処理後 A列 B列 C列     D列 jan ConnectTime feb 空白   空白    JST mar 空白 ConnectTime apr 空白   空白    JST may 空白 ConnectTime jun 空白 ConnectTime この場合B1にIF(C1="ConnectTime","","セルを挿入し右にシフト")的な処理をし、B列に適用させたいのですが可能でしょうか? よろしくお願いします。

  • [エクセル・VBA]縦列のユニークな情報を取り出し、横行に配置

    毎度お世話になります。エクセルのVBAの質問でございますが、文章で説明しづらいのでまず下記をご覧ください。 A列   B列   C列  D列  E列  F列 Month  業者名 摘要 記1 記2  金額 Nov-07 青森KK  011 BAK 304  386 Jan-08 岩手(株) 705 CHC 318  313 Feb-08 (有)埼玉 568 JJG 121 9,480 Feb-08 (株)東京 40  KKI 183  216 Mar-08 (株)東京 103 AOX 248 1,490 Mar-08 北海道  921 FGJ 319 2,730 Apr-08 関西KK  103 NNB 842 1,050 Apr-08 沖縄(有) 406 JJG 831  315 上記のようなA列の情報を下記のように表示させたいのです。金額の大きい順に並び替え、各行のデータが該当するMMM-YYのセルに印(今回は*ですが何でも可)をつけたいと思っております。[Month]はA3に設定されております。      F列 G列  H列  I列  J列  K列 ←列省略 金額 Nov-07 Jan-08 Feb-08 Mar-08 Apr-08     9,480         *     2,730             *     1,490             *     1,050                 *     386    * ↓行省略 *のつけ方はLOOPを2つ作れば出来そうな気がしているのですが、その前段階のMMM-YYの配置の仕方が全くわかりません。[Month]はA3より始まっております。 なにとぞよろしくお願い申し上げます。

  • [エクセル・VBA]縦列のユニークな情報を取り出し、横行に配置

    毎度お世話になります。エクセルのVBAの質問でございますが、文章で説明しづらいのでまず下記をご覧ください。 A列 B列 C列 D列 E列 F列 Month 業者名 摘要 記号1 記号2 金額 Nov-07 青森KK 10118 BAKK 304 386 Jan-08 岩手(株) 705 CHC 318 313 Feb-08 (有)埼玉 5685 JJG 121 9,480 Feb-08 (株)東京 40 KKI 183 216 Mar-08 (株)東京 1035 AOX 248 1,490 Mar-08 北海道 9211 FGJ 319 2,730 Apr-08 関西KK 10312 NNB 842 1,050 Apr-08 沖縄(有) 406 JJG 831 315 上記のようなA列の情報を下記のように表示させたいのです。金額の大きい順に並び替え、各行のデータが該当するMMM-YYのセルに印(今回は*ですが何でも可)をつけたいと思っております。[Month]はA3に設定されております。 F列 G列 H列 I列 J列 K列 ←列省略 金額 Nov-07 Jan-08 Feb-08 Mar-08 Apr-08 9,480 * 2,730 * 1,490 * 1,050 * 386 * ↓行省略 *のつけ方はLOOPを2つ作れば出来そうな気がしているのですが、その前段階のMMM-YYの配置の仕方が全くわかりません。[Month]はA3より始まっております。 なにとぞよろしくお願い申し上げます。

  • Excel オートフィルターを使わずに抽出

    Sheet1A列に日付、B-G列に業種等の項目が入っており、通年の全データが入っています。データ総数は500ほどです。 これを月ごとのシートに分割したいと考えています(Apr,May,Jun,Jul・・・)。これらはSheet1と同じブック内で管理したいと考えています。 Sheet1と月ごとのシートはフォーマットが違い、項目の順序等が異なっています。各列ごとに関数を指定する必要があるかと思います。月ごとのデータ数は20-100くらいで変動します。 こういう状況なのですが、オートフィルター、VBAを使わずに関数で処理したいと考えています。過去の質問などから、INDEX, SMALL, ROWを使ったような関数で処理しようと思ったのですが、うまく処理できないのでご質問させていただいた次第です。 Libraoffice CalcとExcelを両方使う環境です。 どうぞよろしくお願いします。 Sheet1   A    B    C   D   E 3 日付   業者  金額  業種  カテゴリー 4 26/8/19  A社  569  食品  22-1  5 30/4/19  B社  278  加工  32-3 6 5/4/19   C社  654  書類  45 7 11/12/19  A社   754  服飾  63 8 Apr(月別シートの一例)   A    B    C    D     E    F    G 14 日付   業者  業種   カテゴリー 金額  その他1 その他2    15 16

  • Excelについて 適した関数探してます

    シート1に下のようなデータがあり、 A1~A10が番号 B1~B10が○ C1~C10が△ D1~D10が□ E1~E10が× シート2に、A1に番号を入力すると B2に○ C3に△ D3に□ E3に× (○△□×は、数字やデータがはいってます) 解りづらかったらすいません。 要は、シート2のA1に、番号をいれると、シート2のB2~E3に、シート1のデータがでるようにしたいのです。 このような事をしたいのですが、VLOOKUPでできますか? 他に適した関数、式の立て方はありますでしょうか? 挑戦してるのですが、なかなかできません。 XPで、Excel2003です。 良かったらご意見くださいm(_ _)m

  • エクセルVBAで表の平均値を出す。

     はじめまして、よろしくお願いします。 シート2に    A  B  C  D  ・  ・  ・  ・  IV 1       赤  青  ・  ・  ・  ・  ・  2       7  14  ・  ・  ・  ・  ・ 3       6  12  ・  ・  ・  ・  ・ 4       5  10  ・  ・  ・  ・  ・ 5       4  8   ・  ・  ・  ・  ・ 6       3  6   ・  ・  ・  ・  ・ 7       2  4   ・  ・  ・  ・  ・ 8       1  2   ・  ・  ・  ・  ・ 9  という表があります。その表の(C5-C6),(C4-C5),(C3-C4),(C2-C3)の平均値をシート1のC2へ、同じく(D5-D6),(D4-D5),(D3-D4),(D2-D3)の平均値をシート1のD2へ、列IVまで計算するVBAの仕方を教えていただきたいと思います。実際のシートでは計算行数はかなり多くなります。列では途中空白列があります。できる方、よろしくお願いします。

  • 別のシートにデータを出す方法

    シート1に 番号 A1に1 A2に2 A3に3 A4に4 データ↓ B1に43 B2に45 B3に47 B4に55 C1に733 C2に890 C3に826 C4に94 D1に57 D2に67 D3に41 D4に52 E1に301 E2に104 E3に719 E4に441 という表があるとします。 番号1の場合は、B1の43、C1の733、D1に57、E1に301というデータです。 シート2の、 A3に、1という数字(シート1のA1の、1という番号)をいれれば、 シート2の B3に、シート1の、B1の43というデータ。 C3に、シート1の、C1の733というデータ。 D3に、シート1の、D1の57というデータ。 E3に、シート1の、E1の301というデータ。 がでるようにしたいのですが、 VLOOKUPを使ってできますか? どのような関数の立て方したらいいでしょう? XPのExcel2003です。 よろしくお願いしますm(_ _)m

  • エクセルのVBAで教えてください(初心者)

    シート1とシート2があり、シート1には、データが何行か(不特定)あり、シート2の方に必要な列(下記の場合はA、D、E)だけ、コピーをする方法を教えてください。宜しくお願いします。  シート1 (何行あるかわからない) A B C D E  1 ○ ◆ ◇ × ● 2 △ ◎ △ ▲ X 3 ▽ 1 5 V a 4 2 ¥ ■ 〒 ←     ↓ 10 ★ □ ▼ % ☆ シート2(B.C列は不要) A D E  1 ○ × ● 2 △ ▲ X 3 ▽ V a 4 2 〒 ←     ↓ 10 ★ % ☆

  • エクセルで斜めに参照コピー

    1| A1 | B1 | C1 | D1 | E1・・・ 2| A2 | B2 | C2 | D2 | E2・・・ 3| A3 | B3 | C3 | D3 | E3・・・ 4| A4 | B4 | C4 | D4 | E4・・・ ・・・ と普通に並んでいるデータを 1| A1 | B2 | C3 | D4 | E5 |・・・ 2| = | A2 | B3 | C4 | D5 | E6 |・・・ 3| = | = | A3 | B4 | C5 | D6 | E7 |・・・ ・・・ (=は空白セル) とななめに参照コピーさせたいのですが、普通にドラッグコピーさせたのではうまくいきません。データ数が結構多いもので一つ一つコピーするのも大変です。何か簡便な方法はあるでしょうか?列毎もしくは行毎の作業でもいいので、何か良い方法がありましたらご教示いただけませんでしょうか?

専門家に質問してみよう