エクセルの移し変え作業(A表のデータをコピー、B表にペーストする)で
もっと楽で時間の掛からない方法があれば教えてください。

現在のやり方
A表に、1日24時間毎のデータが1年分(365日×24時間=約8800行)あります。
上(1行目は1月1日1時のデータ)から、下(最終行目は12月31日24時のデータ)に向かってあります。

このデータをB表に移します。
B表の1行目は、1月1日のデータで、右方向に1時~24時までのセルがあります。
   2行目は、1月2日のデータで、右方向に1時~24時までのセルがあります。
     〃    〃   〃   〃   〃
   365行目は、12月31日のデータで、右方向に1時~24時までのセルがありま   す。

データ移し変え方法は、
A表から1日分(24データ)をコピー、B表の右方向へ行列を変更してペーストしています。
次に、1月2日を同様にしてコピー、ペースト、365回これをくりかえして1年分をまとめています。

この方法で7年分済ませましたが、作業してくれる方(私を含めて)が全員泣いてます。
花粉症なら分かっているけど風邪だと言い張って作業を休んだり、急に里帰りしたり、目が疲れるから3時間だけ、他にしなくてはならないことが、腱鞘炎だ、など、単調な作業でやたら時間がかかるので嫌われています。

今後、残りの作業年数が20年あり、エクセルの機能の中にこれが楽にできる
方法があれば、是非、是非、教えてください。
マクロは知らないので、出来るだけ、一般的な方法で。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (17件中11~17件)

>#印が目いっぱいに広がってます



Sheet1のA列に入力されている値は何でしょうか?

算式はうまくいってて、表示形式で『#####』が表示されている可能性があります。

Sheet1のA列とSheet2のセルの書式設定の表示形式を一致させることと、セル幅を広くしてみてください。

Sheet1のA列に縦に並んだ数値を、Sheet2の365行×24列に配置しなおしているだけですよね。

この回答への補足

nishi6様へ

1)Sheet1のA列に入力されている値は何でしょうか?
  ただの数値です。最初のセル:A1 は2.66という数値です。

2)Sheet1のA列とSheet2のセルの書式設定の表示形式を一致させること。
 どちらも、表示形式は標準となってます。

3)セル幅を広くしてみてください。
  広くすると、#REF! となっており、セルの窓に、数式の
  =INDIRECT("Sheet1!A"&(ROW()-1)*24+COLUMN())が、{ }で囲まれて
  います。

4)Sheet1のA列に縦に並んだ数値を、Sheet2の365行×24列に配置しなおしてい  るだけですよね。
  作業はそのとおりですが、今テストの段階で1ヶ月分31日だけで
  テストしてます。

頭の悪い生徒を持った先生の立場が、お分かりになりましたか?
理解が悪くて、ごめんなさいね。

補足日時:2002/04/07 19:35
    • good
    • 0

NO3のAWA66です。

質問の内容を早とちりしました。

済みません。出直しします。
    • good
    • 0

OFFSET関数で参照するセルの位置を現在セルの行[ROW()]と列[COLUMN()]を元に


計算する事で処理することができます

A表:シート名『Sheet1』と仮定します
   データは1行目から入力されているとします
B表:シート名『Sheet2』と仮定します
   A表の1~24行目をA1~X1に
      25~48行目をA2~X2に
      以下24行単位で繰り返します

【設定】
Sheet2のA1に以下の式を入力しA1~X365に単純にコピーします

  =OFFSET(Sheet1!$A$1,(ROW()-1)*24+COLUMN()-1,0,1,1)

  OFFSET(基準セル,行変位,列変位,参照行数,参照列数)
   基準セル:Sheet1!$C$1に固定 
   行変位:(現在行-1)*24+(現在列-1)
        この指定で参照するSheet1の行番号を決定します
        $A$1からの変位ですから、A1は0、A2は1となります
   列変位:常にSheet1のA列を参照するので0となります
   参照行数:1つのセルを参照するので1で固定
   参照列数:1つのセルを参照するので1で固定

【補足】

上記の状態では表Aに表Bが連動していますので
表Aが変更されれば表Bも変更されます
これが不味い場合はSheet2全体を選択(Ctrl+A)し右クリックでコピー後、
再度右クリックで[形式を選択して貼り付け]で[値]で貼り付けます


もし表Aに空白が有る場合参照結果は0となります
空白のままにしたい場合は、空白かどうかチェックして
空白を意図的にセットする必要が有ります

=IF(OFFSET(Sheet1!$A$1,(ROW()-1)*24+COLUMN()-1,0,1,1)="","",OFFSET(Sheet1!$A$1,(ROW()-1)*24+COLUMN()-1,0,1,1))

この回答への補足

xxsadayanxx様へ

お世話になります。
指示どおりに進めたつもりですが、うまくいきません。

※2つのシートとも、A1からデータが入っています。
テスト段階ですので、2日分(48個データを移しかえる)でトライしてます。

行ったテスト
1)sheet2のA1にご指示がありました数式を入れて、A1からX10まで
  数式を10行コピーしてあります。
2)sheet1の A1からA48までコピーします。
3)sheet2に戻り、A1からX2までの範囲を反転させ、行列を変更してペースト
  結果;A1からA24を突き抜けて右1行に48個が連続で並びます。
     なにもせず(反転させず)にしても、同じ結果です。
4)そのほか、値だけペーストなど、いくつかテストをしましたが、
  いずれも、行列を変更させてペーストしています。
  A24で下のB1に折りかえしてくれません。

私の操作の問題だと思いますが、どこか不思議な点がありましたら
ご指示ください。

※ sheet2A1の窓には 
  =OFFSET(Sheet1!$A$1,(ROW()-1)*24+COLUMN()-1,0,1,1)が入り、
  sheet2のA1に、結果として、#VALUE! が見えてます。

補足日時:2002/04/07 20:36
    • good
    • 0

質問を誤解していたらm(_ _)mゴメンさい。



コピーとペースト一日単位でなくて256日単位にしたらどうなんですか?
ペーストの時に「編集」→「形式を選択して貼り付け」行列を入替えるで
256日(列)出来ます。

この回答への補足

HAL007 様

ご連絡ありがとうございます。
テストは、データを48個で行いました。

1)sheet1のセルA1からA48まで(2日分)を上から下へコピーして、

2)sheet2のセルA1からA24まで と B1からB24まで(48データ分)を
  反転させ、「形式を選択して貼り付け」 行列を入替えるでは
  データは、A24を突き抜けて、A48までペーストします。
  A24で1段下のB1に折り返せば助かるのですが、、、、、

結果だけお知らせしました。
コーヒーを飲んでから、教えていただいた他の方法を落ち着いて
紐解くつもりです。

補足日時:2002/04/07 20:00
    • good
    • 0

 これがベストかどうか分かりませんが、私も初心者ですので。



 一年分を一度にコピー、andペーストは出来ないのですか。
範囲指定して全部コピーです。

駄目なら、B表の各対応するセルにA表のセルを参照する式を、 B表の 
1月1日のセルに =A1 1月2日 =A2・・・・・・としてその式を
全部コピーすれば簡単に出来るのでは有りませんか。

私も、難しいことは解りませんが・・・・・・
    • good
    • 0

説明不足?の感もあり、再度の投稿です。


ついでに別法です。この式の8760は最後の行です。(閏年は違う?9000とかでも問題はありません)

両式とも、Sheet2の行番号、列番号からSheet1の行番号を決めています。
Sheet2の貼り付け開始位置がA1でない時は、この考え方を参考に変形することになります。

=INDEX(Sheet1!$A$1:$A$8760,(ROW()-1)*24+COLUMN(),1)
    • good
    • 0

Sheet1のA列にデータがあるとしています。

日単位で横にしているわけですよね。

Sheet2のA1に、下をコピー。右方向に24個コピー。下に365個コピー。(最後に値にする必要があるなら、全部をコピーて終わったら値貼り付けします。)

=INDIRECT("Sheet1!A"&(ROW()-1)*24+COLUMN())

こういうこと?

この回答への補足

nishi6様へ

1年分でなく、1ヶ月分(31日)でテストしていますが、
sheet2のA1に指示された数式を入れ、A列下方向に31行、
A列右方向に24列コピーし、セル;B2からセル:X31までもコピーしました。

#印が目いっぱいに広がってます。

この場合には、数式が違ってくるのではないか。と思ってますが。
sheet1では、なにも仕掛けをしておりません。
(A1から下にデータが入っているだけです)
どこに、私の勘違いがあるのしょうか?

※ 実際の作業は、sheet1のC2がデータのトップで下方向、
sheet2ではB8がデータのトップで右方向に24個です。
テストでは、どちらもA1から始まるように、周りを削っています。

補足日時:2002/04/07 18:24
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCELで入力したものが違うシートにコピーされるようにするには・・

EXCELで、あるシートで入力した数値や文字が違うシートにそっくりコピーされるようにしたいのですが・・・
違うシートに同じ数値や文字をいちいち入力するのがめんどうだったので・・・(あと、入力間違えをすることもあると思ったので)
どなたか教えてください。宜しくお願い致します。

Aベストアンサー

同じブック間でも違うブック間でも、
リンク貼り付けという方法があります。

多分ご質問では、最初のページに「2006年」と入力したら
次からのページの同じ場所に「2006年」と表示させたい、と、こんな感じではないでしょうか?

あるシート(貼り付け元)の範囲を選択し、コピーします。
違うシート(貼り付け先)の1セルを右クリックし、形式を選択して貼り付けで出た窓の下に
「リンク貼り付け」ボタンがありますから、それを押して下さい。

あるシートに入力した文字が違うシートに表示されます。
ただし書式は、違うシートのセルの書式の通り表示されます。
また、あるシートのセルに何も入力されていなければ、
違うシートの該当セルには「0」と表示されます。
この「0を表示しない方法もありますので、
具体的にどのシートのセル番地からどのシートのセル番地、という風に書いてください。
1つのセルのみ貼り付ける場合と、2つ以上の範囲を貼り付ける場合で
貼り付けられ方が微妙に違います。

さて、上手に貼り付けられたら、違うシートに貼り付けられたそのセルを、
また別なシートに次々にコピーしていきます。
1回リンク貼り付けをしたら、このように使いまわすことができます。

あまりにも情報が少ない中回答させていただいたのですが、
上記の中で当てはまる部分があったでしょうか?

実際貼り付けてみて、その後を報告してください。

同じブック間でも違うブック間でも、
リンク貼り付けという方法があります。

多分ご質問では、最初のページに「2006年」と入力したら
次からのページの同じ場所に「2006年」と表示させたい、と、こんな感じではないでしょうか?

あるシート(貼り付け元)の範囲を選択し、コピーします。
違うシート(貼り付け先)の1セルを右クリックし、形式を選択して貼り付けで出た窓の下に
「リンク貼り付け」ボタンがありますから、それを押して下さい。

あるシートに入力した文字が違うシートに表示されます。...続きを読む

Qエクセルに別ファイルのエクセルを貼り付けたい

office2000を使っています
エクセルに別ファイルのエクセルを貼り付けたいのですが、貼り付けたいエクセルが、貼り付け先で思うように表示されません。
貼り付けたいエクセルはa列からk列まであるのですが、貼り付け先ではa列からf列までしか表示されません。
以前から時々同じような作業をしていますが、上手くいくときと、いかないときがあり、色々してるうちに出来上がりましたが、今回はどうしても上手くいきません。どなたかご指導下さい。よろしくお願いいたします

Aベストアンサー

原因は、貼り付けるセル範囲が大きすぎるからではないですか?

恐らく、ご希望の動作は「図のリンク貼付け」のようなことでしょうか?であれば、オブジェクトの挿入からよりもこちらの方法の方が良いでしょう。

この方法で、セル範囲を何個かに分割して、貼り付ければどうですか?

1. 元ファイルのセルのコピー
2. 貼り付けたいEXCELファイルのシートを選択
3. [Shift]を押しながら、メニューの[編集]をクリック
4. [図のリンク貼り付け]で貼り付け

[図のリンク貼り付け]はEXCELの隠しメニューです。お試し下さい。


人気Q&Aランキング