• ベストアンサー

エクセルで別々のシート同士の参照とコピーのしかたについてお聞きします

今、シート1のA1、A2、A3にデータが入っているとします(列データ)。これをシート2のA4、B4、C4にそれぞれコピーしたい(行データ)とします。つまり、A1→A4、A2→B4、A3→C4 にコピーしたいわけです。(縦のデータを横にコピーするとでも言いましょうか) 次のようにしてみました。 (1) A4に=シート1!A1と入力する。 (2) A4をコピペでB4、C4にコピーする すると、B4、C4の参照先がA2、A3にならず、B1、C1になってしまいます。 つまり、B4=シート1!B1 などとなってしまうのです。 いまはいちいち手で修正しています。 実際は1月から12月までのデータを20支店にわたって上のようにコピペするのでちょっとたいへんな手作業です。 「形式を選択して貼り付け」>行列を入れ替える、でやってみましたがうまくいきません。 オートフィルみたいにささっとできる方法はないでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • sakeman
  • ベストアンサー率43% (67/153)
回答No.2

関数でする一例を挙げますので参考にしてください。 セルA4に「=OFFSET(Sheet1!$A$1,COLUMN()-1,0)」と入力する。→右にオートフィルする。 質問の趣旨と異なっていたらご容赦を。

skylark
質問者

補足

さっそくどうもありがとうございました。 >セルA4に「=OFFSET(Sheet1!$A$1,COLUMN()-1,0)」と入力する。→右にオートフィルする。 ひとつお聞きしたいのですが、↑の COLUMN()-1,のうち()と-1は何を意味するのか、教えていただけませんか? お手数をおかけします。

その他の回答 (7)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.8

VBAで考えると Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") For i = 1 To 3 sh2.Cells(4, i) = sh1.Cells(i, "A") Next i End Sub です。 骨子は sh2.Cells(4, i) = sh1.Cells(i, "A")にあり、 4   i i   "A" と、変化するiがクロスする位置に来るところにあります。

skylark
質問者

お礼

VBAによる方法のご紹介、ありがとうございました。 残念ながらVBAは全く知りませんが、ほかの方の参考になればいいなあと思いました。 どうもありがとうございました。

  • sakeman
  • ベストアンサー率43% (67/153)
回答No.7

#2の者です。 >ひとつお聞きしたいのですが、↑の COLUMN()-1,のうち()と-1は何を意味するのか、教えていただけませんか? COLUMNは列番号を返す関数です。例えば、A列は1、B列は2を返します。即ち、この関数が入っている列の番号を返します。この関数は引数を必要としませんので、COLUMNの後に、「()」だけを付けます。例えばTODAY()と同じです。 OFFSET関数は、基準セル(Sheet1!$A$1)から指定した行数,列数をシフトしたセルやセル範囲を参照します。2番目の引数(COLUMN()-1)はシフトする行数を指定します。例えば、Sheet2のセルB4にはSheet1のセルA2を参照する(即ち1行下)ので、B4セルの「COLUMN()」の値は2になるので、「-1」で「1」にしています。 なお、B列,C列・・・も参照する場合は、セルC4に同様の考えで、「=OFFSET(Sheet1!$A$1,COLUMN()-1,ROW()-4)」と入力し、オートフィルしてください。

skylark
質問者

お礼

()をなかなか理解できませんでしたが、TODAY()でああ、なるほどと思いました。 親切に教えていただきまして、ありがとうございました。

noname#11594
noname#11594
回答No.6

#3です。  Σなど関数が設定されている場合でも、 「編集」→「形式を選択して貼り付け...」そして「行列を入れ替える」をチェックして[OK]ボタンを押せば、横に足してたものは、縦に足されるよう、また、縦に足してたものは、横に足されるように、式が変形されます。

skylark
質問者

補足

何度も実験していただいて感謝いたします。この件、私も、もう一度試してみます。 ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 #1 さんの >>2. 「ツール」-「ワークシート分析」-「ワークシート分析モード」で数式表示に切り替え、 それは、Excel 2002 以上の仕様です。Excel 2000 にはありません。また、外部ツールのエディタを使うのでしたら、VBA でも可能です。 ですが、 >形式を選択して貼り付け」>行列を入れ替える、でやってみましたがうまくいきません。 ここの部分が気になります。 私も、#3 さんと同じように、それだけに関しては、問題がありません。なぜ、「うまくいかない」のですか? #2 さんの回答とは違う方法としては、 B4: =INDIRECT("Sheet1!A"& Column()) 後は、フィルハンドル・ドラッグコピーで出来ます。

skylark
質問者

お礼

>私も、#3 さんと同じように、それだけに関しては、>問題がありません。なぜ、「うまくいかない」のですか? 別のところで申したように私の間違いでした。すみません。 INDIRECT関数は初めて知りました。いろんなアプローチがあることに驚いています。 ご教示を感謝いたします。

  • buihyaku
  • ベストアンサー率29% (97/326)
回答No.4

#1です。 >>1. 12月まで縦にシート1!A1, シート1!A2...となるよう並べる >というのはどこに並べるのですか?エクセルのシートで空いている部分でしょうか、 エクセルのシートのどこか空いてるところです。 >等号=は不要ですね。それと、一つ一つ手で入力するわけですね。オートフィルでまとめて作るというわけにはいきませんよね。 ええと、ですね。たとえばシート2のH1が空いていたとしたらそこに「=Sheet1!A1」というようにシート1の1月?への参照を入力します。 あとはそのセルを選択して右下をつかんでずるずると下に12か月分コピーします。 そうすると勝手に「=Sheet1!A2」「=Sheet1!A3」。。というようにコピーされるはずです。 > 「ツール」-「ワークシート分析」-「ワークシート分析モード」 このコマンドを実行しただけで先に作ったセルが数式表示になりませんか? そうしたらその縦に並んだ12か月分を選択してコピーしてテキストファイルへ持っていく、という感じになります。 こちらの環境は2002ですので、もし2000だとこのコマンドがないのであれば、このやりかたは無理だとおもいます。ごめんなさい。

skylark
質問者

お礼

2000だと「ワークシート分析」でセルの数式表示はできないようですね。残念。 ということで、=抜きでオートフィルで縦長の文字列を作り、あとはおっしゃるようにテキストエディターで作業しました。 まず、=とタブをつけてEXCELに戻してやりました。別の支店名を入力するためにテキストエディターの「文字列の置換」を使うとあっという間にシート名を別名にできました(シート名は支店名になっています)。作業時間が私の当初のものより半分に短縮できました。この方法だと参照先がはっきりわかるので初心者には安心できると思いました。 色々親切に教えていただいてありがとうございました。

noname#11594
noname#11594
回答No.3

手元でやってみましたが 「形式を選択して貼り付け」>行列を入れ替える でうまくいきましたよ? シート1のA1、A2、A3を選択して「編集」→「コピー」 シート2のA4のみを選択して「編集」→「形式を選択して貼り付け...」そして「行列を入れ替える」をチェックして[OK]ボタンを押すと、A4,B4,C4にA1,A2,A3の内容がコピーできました。

skylark
質問者

お礼

その通りです。コピーできることを確認しました。お手数をおかけしました。 今困っているのはシート1のA1、A2、A3 にΣなど関数が設定されている場合です。質問の時、内容を簡素にするために数字データがA1、A2、A3 に入っている場合を想定したものです。 どうもありがとうございました。

  • buihyaku
  • ベストアンサー率29% (97/326)
回答No.1

そのものずばりのやり方はわかりませんが、一度縦に数式をならべておいて、それをコピーしてテキストエディタで横に並べ替えてから貼り付けしなおしてはどうでしょうか。 1. 12月まで縦にシート1!A1, シート1!A2...となるよう並べる 2. 「ツール」-「ワークシート分析」-「ワークシート分析モード」で数式表示に切り替え、数式をまとめてコピー 3. テキストエディタに貼り付けると改行で区切られてずらりと並びますので、改行をタブに置換 (たとえば秀丸ですと 「\n」を「\t」に正規表現で置換します。) 4. タブで区切ってずらりとならんだデータをコピーしてエクセルに改めてはりつけると横に並んで貼り付けられます。

skylark
質問者

補足

さっそくのアドバイス、感謝いたします。色々わからないところが出てきました。すみませんが教えてください。 >1. 12月まで縦にシート1!A1, シート1!A2...となるよう並べる というのはどこに並べるのですか?エクセルのシートで空いている部分でしょうか、それともテキストエディターに、でしょうか?また、等号=は不要ですね。それと、一つ一つ手で入力するわけですね。オートフィルでまとめて作るというわけにはいきませんよね。 >2. 「ツール」-「ワークシート分析」-「ワークシート分析モード」で数式表示に切り替え、 私のはEXCEL2000なのですが、どうも数式表示というのができないのですが、範囲の選び方とかがまずいのでしょうか? よろしくお願いいたします。

関連するQ&A

  • エクセルでオートフィルを使いコピー 

    エクセルで表を作成しているのですが たとえば シート名2012のA1のセルに シート名2011のA1をコピーし シート名2012のA2のセルに シート名2011のB1をコピーしていくというように コピー先とコピー元が縦横になる場合、オートフィル機能が使えないようですが この場合どのような関数を作ればオートフィルで作業できますか? 沢山有るのでいちいち値をコピーして行列を入れかえて貼り付けの方法だと時間がかかってしまいます。 宜しくお願いします。

  • エクセルでシート間のコピー

    Win98 EXCEL2000です 例えば sheet1に A1・・・あ A2・・・い A3・・・う A4・・・え A5・・・お A6・・・か・・・・ と入力してあるとします。 sheet2のA1に=と入力しsheet1のA1をクリック、ENTERを押すと Sheet2のA1に あ と表示しますよね。 (リンク貼り付けというんですかね。参照というんですかね。) その後、オートフィルでA6までドラッグすると A2・・・い A3・・・う A4・・・え A5・・・お・・・ とSheet1と同様な文字が入力するはずなのですが 突然 オートフィルしても A2・・・あ A3・・・あ A4・・・あ・・・ という具合に あ のコピーにしかなりません。 数式バーで確認しても A2・・・=Sheet1!A2 A3・・・=Sheet1!A3 と、なっています。 自分のPCのEXCEL2002ではちゃんとできるのですが、 会社のEXCEL2000ではどうしてもこういう現象がでてしまいます。 お分かりの方教えてください。

  • エクセルで連続してコピーするには

    いつもお世話になります。 オートフィルを使って値をコピーしたいのですが, コピー先に一行飛ばしでいれたいので,オートフィルを使うと,間に入っている行もカウントされてしまします。 例えば A1に「='Sheet1'!B2」を入れて, A2は空白,A3には「='Sheet1'!B3」と連続していきたいのですが…。 エクセル97です。よろしくお願いします。

  • Excelで別sheetの参照について

    エクセルで別sheetの参照についての質問です。 画像のようにsheet1の値を参照してsheet2表示させたいのですが、これを約100件分作成したいのですがコピー&ペーストをすると参照セルがずれてしまいます。 sheet2のA1をコピーしてA4に張り付け=Sheet1!A2&Sheet1!B2&Sheet1!C2としたいのですが、A4に張り付けを行うと=Sheet1!A4&Sheet1!B4&Sheet1!C4となってしまいます。 複数行あけてペーストする場合に参照セルを1行ずつずらして参照する方法はありますでしょうか?

  • エクセル シート間参照について

    シート1のA1の内容を、シート2のA1に(=Sheet1!A1)で参照できるようにし、それぞれA10までオートフィルしました。 シート1のA7とA8に行を挿入し新たにデータを入力しましたら、シート2のほうには反映されませんでした。 A8(=Sheet1!A8)の次がA9(=Sheet1!A10)となってしまいます。 シート1を変更した時、シート2へも反映させるにはどうしたらいいでしょうか?

  • Excelオートフィルとコピーについて

    Excel2007を使っています。 まず、オートフィルについてなのですが、表の途中で数字を入力し、オートフィルでコピーをしようとすると連続データになってしまいます。 試しに他の場所で同じことをしたら連続データではなく同じ数字が出ました。 これはExcelの方の認識の違いかなんかですか?? そしてこれを解消するのにCtrlを押しながらオートフィルを使います。 しかし、この時数字だけをコピーしたいのでオートフィルのオプションを使って書式なしコピーをすると数字は連続データになってしまいます。 オートフィルを使わずにコピー、貼り付けで貼り付け先の書式に合わせるという方法しかないのでしょうか? よろしくお願いします。

  • エクセルで縦列を横列にコピーしたい

    エクセルで縦列のデータを横列にコピーしていきたいのです。例えばA40のセルに「=G3」と入力し横にコピーしていくとB40には「H3」、C40には「I3」、D40には「J3」・・・・となります。そうではなく、B40には「G4」、C40には「G5」、D40には「G6」・・・・の値が入るようにしたいのです。この場合A40のセルにどのような式を入力してコピーしていけばいいのでしょうか。(複数列あり「形式を選択して貼り付け-行列を入れ替える」では上手くできません。)

  • エクセルのオートフィルで教えてください

    sheet1のA列、B列、C列にデータが入っています。 Sheet2の表に参照でデータを入れたいと思っています。 Sheet2のB2に=Sheet1!A3 B3に=Sheet1!B3 B4に=Sheet1!C3 B5~B7は空欄にして B8に=Sheet1!A4 B9に=Sheet1!B4 B10に=Sheet1!C4 と連続して入力していきたいです。 B2~B7を選択してオートフィルを使ってみたのですが B8,B9,B10には、=Sheet1!A9、=Sheet1!B9、=Sheet1!C9が入ってしまいます。 B13まで手作業で入力して、そこからオートフィルをやってみましたが 空欄部分がカウントされてしまうのか上手くいきません。 エクセル初心者です。 よろしくお願いいたします。

  • エクセル関数の他のシート参照について

    エクセル2000についてお尋ねします。どんな関数でもいいのですが、例えば「INDIRECT」関数で「sheet5」のD20セルに「INDIRECT($H$13"月!D3")] という関数を入れました。「sheet1」から「sheet4」には1月から4がつのデータがあります。「sheet5」のH13セルに1と入れたら。「sheet5」のD20セルに1月のD3セルが出るようになっています。ところが、この関数を相対コピーできません。"月!D3"が文字列なので?オートフィルでコピーできず一つ一つ入力しなくてはいけません。他に良い方法はありませんか?

  • Excelで他シートの参照式が入った表の行・列を入れ替えるには

    他シート(もしくは別ブックのシート)を参照している表(すべて絶対参照)をコピーし、形式を選択して貼り付けした場合、うまく式が入れ替わりません。 例: Sheet1のA1~B3に 1 2 3 4 5 6  と入力してあり Sheet2のA1~B3に =Sheet1!$A$1 =Sheet1!$B$1 =Sheet1!$A$2 =Sheet1!$B$2 =Sheet1!$A$3 =Sheet1!$B$3 と絶対参照式が入っていて このSheet2の表の行列を入れ替えたいのです Sheet2の表をコピーして、Sheet3のA1に 形式を選択して貼り付けで 行列を入れ替えるを実行すると 表示 1 2 0 3 4 0 式 =Sheet1!$A$1 =Sheet1!$B$1 Sheet1!$C$1 =Sheet1!$A$2 =Sheet1!$B$2 Sheet1!$C$1 となってしまいます やりたいのは =Sheet1!$A$1 =Sheet1!$A$2 Sheet1!$A$3 =Sheet1!$B$1 =Sheet1!$B$2 Sheet1!$B$3 となって欲しいのですが 同一Sheet内ではきちんと入れ替わるのですが 同一シートでの絶対参照と他シートでの絶対参照は 性質が違うのでしょうか どうやったら別シート参照式の入った表の行列を入れ替えることが出来ますでしょうか よろしくお願いします

専門家に質問してみよう