• ベストアンサー

エクセルの移し変え作業(A表のデータをコピー、B表にペーストする)で

エクセルの移し変え作業(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年あり、エクセルの機能の中にこれが楽にできる 方法があれば、是非、是非、教えてください。 マクロは知らないので、出来るだけ、一般的な方法で。よろしくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.11

原因不明ですね。 〔第3段階〕 Sheet2のA1に  =INDEX(Sheet1!$A$1:$A$8760,(ROW()-1)*24+COLUMN(),1) としてみてください。 『Sheet1』はシートタブに表示されているシート名です。 『$A$1:$A$8760』はとりあえず『$A$1:$A$500』でもかまいません。 だめなら、 〔第3段階〕 Sheet1のA列のデータの入っている範囲に名前をつけます。  Sheet1のA列のデータの入っている範囲(A1からA列のX行まで)を選択して、   挿入→名前→定義で『DATA』を入力 Sheet2のA1に  =INDEX(DATA,(ROW()-1)*24+COLUMN(),1) とします。 2.66がでればコピーします。 2.66がでなければ、  セルA1で =(ROW()-1)*24+COLUMN() がどうなるか教えて下さい。  セルA2で =(ROW()-1)*24+COLUMN() がどうなるか教えて下さい。  セルB1で =(ROW()-1)*24+COLUMN() がどうなるか教えて下さい。 Excelのバージョンが関係する? Indexを使ってみています。

abouka
質問者

お礼

nishi6様 誠に申し訳ないことが分かりました。 今まで、数式を入れて数式欄が表示されている左横のチェックで 入れておりました。 そうすると、値の更新シートがでてきますが、意味が分からず 恐ろしくてキャンセルしておりました。 たまたま OK をクリックしましたら、数値が正常に出てくる ことに気がつきました。 すると、その間何回もわずらわしいことを、nishi6様に考えていただき、 大変申し訳ありません。 教えていただいた、#1の回答で、すべてができた訳です。 本当に、ごめんなさい。 私の無知のため、時間を取らせたことをお侘びします。 この質問でマクロに手をつけたので、その結果が確認できてから 締め切りします。 ありがとうございました。 追伸;明日はちょっとでなく、ピノキオで鼻高々です。    いい忘れたこと:エクセル2002を使ってます。

その他の回答 (16)

  • awa66
  • ベストアンサー率37% (14/37)
回答No.6

NO3のAWA66です。質問の内容を早とちりしました。 済みません。出直しします。

noname#1523
noname#1523
回答No.5

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))

abouka
質問者

補足

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! が見えてます。

  • HAL007
  • ベストアンサー率29% (1751/5869)
回答No.4

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

abouka
質問者

補足

HAL007 様 ご連絡ありがとうございます。 テストは、データを48個で行いました。 1)sheet1のセルA1からA48まで(2日分)を上から下へコピーして、 2)sheet2のセルA1からA24まで と B1からB24まで(48データ分)を   反転させ、「形式を選択して貼り付け」 行列を入替えるでは   データは、A24を突き抜けて、A48までペーストします。   A24で1段下のB1に折り返せば助かるのですが、、、、、 結果だけお知らせしました。 コーヒーを飲んでから、教えていただいた他の方法を落ち着いて 紐解くつもりです。

  • awa66
  • ベストアンサー率37% (14/37)
回答No.3

 これがベストかどうか分かりませんが、私も初心者ですので。  一年分を一度にコピー、andペーストは出来ないのですか。 範囲指定して全部コピーです。 駄目なら、B表の各対応するセルにA表のセルを参照する式を、 B表の  1月1日のセルに =A1 1月2日 =A2・・・・・・としてその式を 全部コピーすれば簡単に出来るのでは有りませんか。 私も、難しいことは解りませんが・・・・・・

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

説明不足?の感もあり、再度の投稿です。 ついでに別法です。この式の8760は最後の行です。(閏年は違う?9000とかでも問題はありません) 両式とも、Sheet2の行番号、列番号からSheet1の行番号を決めています。 Sheet2の貼り付け開始位置がA1でない時は、この考え方を参考に変形することになります。 =INDEX(Sheet1!$A$1:$A$8760,(ROW()-1)*24+COLUMN(),1)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

Sheet1のA列にデータがあるとしています。日単位で横にしているわけですよね。 Sheet2のA1に、下をコピー。右方向に24個コピー。下に365個コピー。(最後に値にする必要があるなら、全部をコピーて終わったら値貼り付けします。) =INDIRECT("Sheet1!A"&(ROW()-1)*24+COLUMN()) こういうこと?

abouka
質問者

補足

nishi6様へ 1年分でなく、1ヶ月分(31日)でテストしていますが、 sheet2のA1に指示された数式を入れ、A列下方向に31行、 A列右方向に24列コピーし、セル;B2からセル:X31までもコピーしました。 #印が目いっぱいに広がってます。 この場合には、数式が違ってくるのではないか。と思ってますが。 sheet1では、なにも仕掛けをしておりません。 (A1から下にデータが入っているだけです) どこに、私の勘違いがあるのしょうか? ※ 実際の作業は、sheet1のC2がデータのトップで下方向、 sheet2ではB8がデータのトップで右方向に24個です。 テストでは、どちらもA1から始まるように、周りを削っています。

関連するQ&A

  • エクセル98のコピーペーストについて

    エクセル98を使用しております。 そこで、下記のようなコピーペーストが可能かどうか教えて頂けないでしょうか? また、コピーペースト以外に方法があれば、教えて頂きたいのです。宜しくお願いします。 例えば、 A1セルに10、B1セルに15、C1セルに20とあったとして、 A50セルに「=A1]答10、B50セルに「=15」答15、C50セルに「=C1]答20 と置いきたいのです。 つまり、縦方向のデーターをコピーして、横方向に貼りつけていきたいのですがどうでしょうか? 手作業で1つ1つ入れて行くしか方法が無いのでしょうか?

  • excel のコピー&ペーストについて

    会社で表(Excel2000)を作らなければならなくなりました。 3列を一つの区切りとして10ケ並んでいる表で、1行目の1・4・7・・・・・を別のシートに抽出しました。これをコピーして1行目の2・5・8・・・・次に3・6・9・・・とコピー&ペーストしてゆきたいのですが、単純にコピペすると全然違うセルをペーストしてしまいます。一つ一つ指定してゆくと2日から3日この表を作るのにかかってしまうと思います。説明下手で申し訳ありませんが、これに使える関数とか方法があれば教えて下さい。

  • エクセル 同じ作業(行の削除,コピーペースト)を簡略化したい。

    いつもありがとうございます。 Excel2000を使ってデータの加工をしています。 3000行くらいあるワークシートがあります。 1.その中から削除したい行があるので,いちいち行番号のところで右クリックをして削除をしています。 これをもっと簡略化する方法はないでしょうか。 2.コピーペーストを繰り返す作業もしています。左手の小指がツリそうでプルプルしているのです。こちらも更に簡略化する方法はないでしょうか。 説明が拙くて申し訳ありません。

  • エクセルで工程表・作業表を作っています 塗りつぶしの自動化についてお教えください

    エクセルで工程表・作業表をつくることになりました。 A1セルに項目名「年月日」A2セルに項目名「曜日」 以下A3 A4・・・と作業氏名が入っています B1から右方向に2005/01/01の形式で連続して 年月日が入っています B2はB1を参照してWeekday関数を入れて 曜日を表示しています。 ここからなのですがA3から下方向に作業者名が入力されていますが 曜日に関係なく ばらばらに「休」と文字を入れて この作業者がその日は休みであることをあらわしています。 ある人のセルに数字を2種類入力して 作業日数分塗りつぶして その作業の種類を色で塗り分けたいのですが 2005/11/24 ある作業者の欄に数字を3(三日間という意味) を入れると 24日25日26日が自動的に塗りつぶすようなことは 可能でしょうか? そして たとえば25日の欄に「休」を入っている場合には 24日は塗りつぶして 25日は「休」のままで塗りつぶさなくて 26日と27日をまた塗りつぶすという判別の方法があればと 思っています。 関数で可能なのか もしくはセルをクリックなどして ユーザーフォームを立ち上げて入力を促すマクロなどでないと 難しいのか いかがでしょう? 文章がわかりにくかったら申し訳ありませんが 補足の解説をさせていただきますので よろしくお願いいたします

  • エクセルでコピー・ペーストができない

    エクセル2003を使って集計表を作成しているのですが シート(4月)のセルをコピーしてシート(5月)に貼り付けようと しても右クリックメニューの貼り付けがグレーになっていて ペーストできません 原因が何なのかわかりません シートやセルに保護は掛かっていませんし 複数シートを選択してもいません 右クリックメニューでコピーまではできるのですが困っています

  • エクセルで、sheet1とsheet2の数値を提出表スタイルに並べかえて移動したい。

    皆様にお世話になります。 エクセルを使って、sheet1の数値とsheet2の数値データを提出表スタイルに並べかえて移動したいのです。 sheet1の表は、A2~FZ2に○年1月1日~6月30日の日付、  列方向の A2~A25は1時~24時までの表示があり、B2~FZ25間のセル (4344個)にデータが並んでいます。 sheet2の表は、A2~FZ2に○年7月1日~12月31日の日付、 列方向の A2~A25は1時から24時まで表示、B2~GC25間に (4416個)のデータが並んでいます。 提出表スタイルの表は、A8に1月1日の日付があり、下方向に1月2日(A9)、 3日(A10)と最終行の12月31日はA372です。 右方向は、A7~Y7に1時~24時までの時間表示、数値をインプットする最初のセルはB8で、B8~Y372までデータが入れば完成です。 sheet1、sheet2の数値を提出表のスタイルに(簡単に時間をかけずに)移し変える方法があれば教えていただけるようお願いします。 (以前同じような質問をいたしましたaboukaです。その時教えて貰いましたすばらしい回答でその作業は急ピッチで進められました(現在も続行中)。 今回新しい問題が出て、以前の回答方法を応用できないか?を考えたり、エクセル応用編を見ましたがギブアップします。よろしくお願いします)

  • エクセル 数式をコピーペーストしたい

    具体的に話をします セルA1に単価 セルB1に数量 セルC1に結果 ↑↑↑ この式をセルA2~100行目までペーストしたいです 普通にセルA1の数式をコピーしてペーストすると出来ませんでした まさか1行1行数式を入力するわけにはいかないので簡単なやり方があれば教えて下さい

  • エクセルのコピー&ペーストについて

    エクセルで作ったある表をコピー&ペーストで、セルの寸法(幅とか高さ)も、コピー元通りペーストする方法を教えてください。 いつもペーストの結果がセルのデフォルトの寸法でしか出来ないので困っています。 どうぞ宜しくお願い致します。

  • エクセルのコピー&ペーストについて

    エクセル2010を使用しています。大量のエクセルデータを、指定された表に張り付けたいのですが、指定された表の行が2列ずつセルを結合されている為、うまくいきません。何か良い方法をご存じの方、教えて下さい。

  • エクセルの表、ワードの表をパワーポイントの表へ持ってくる方法

    パワーポイントには、既に10行10列の表が作ってあるとします。 エクセルのエリア(A1:A4)を選んで普通にコピーして、パワーポイントに移動して、表の(1,1)をクリックして、通常のペーストをすると、ある時は、期待通り4つのセルにセルごとに正しくコピーされる。別の時には、パワーポイントの一つのセルに、データが4行になって入ってしまう(これは、形式を選んでコピー「値」に対応すると思います)。何が結果の違いを生んでいるのか、分かっていません。 ワードの表のデータをコピーする場合も、上記と同じです。 質問は、「パワーポイントへのデータのペーストに関し、どう言うルールがあり、うまくデータを表の形でペーストするにはどのようにすれば良いのか」ということです。 パワーポイントの表、100行4列にデータを、エクセル、ワードから持ってこなければいけません。 よろしくお願いいたします。

専門家に質問してみよう