• 締切済み

EXCEL 参照セルを2列ずらしたいです

関数など調べてみたのですが、うまくできずに投稿しました。 現在WindowsVistaでEXCEL2007を用いています。 シート1枚目には A1・・D1・・G1・・と2列おきにデータが並んでいます。 このデータをシート2枚目の A1 A2 A3 に次々と反映させたいと思っています。 反映させたいデータが途方もない数なので、 関数などで早く処理できる方法がありましたら、 ぜひ教えてください。 よろしくお願いいたします。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 質問者様が御求めになられているのは、 Sheet2のA1セルにSheet1のA1セルのデータを反映させ、 Sheet2のA2セルにSheet1のD1セルのデータを反映させ、 Sheet2のA3セルにSheet1のG1セルのデータを反映させ、           ・           ・           ・ という事を行う関数なのでしょうか?  それでしたら、Sheet2のA1セルに次の関数を入力してから、Sheet2のA1セルをコピーして、Sheet2のA2以下に貼り付けると良いと思います。 =IF(OFFSET(Sheet1!$A$1,,(ROWS($3:3)-1)*3)="","",OFFSET(Sheet1!$A$1,,(ROWS($3:3)-1)*3))  又、次の関数でも、同じ事が出来ます。 =IF(INDEX(Sheet1!$1:$1,COLUMN(Sheet1!$A$1)+(ROWS($3:3)-1)*3)="","",INDEX(Sheet1!$1:$1,COLUMN(Sheet1!$A$1)+(ROWS($3:3)-1)*3))

全文を見る
すると、全ての回答が全文表示されます。
  • MIHO0821
  • ベストアンサー率34% (70/203)
回答No.1

マクロでVBA記述をすれば簡単にできます。 関数では…コピー先シートの全てのセルに式のセットが必要ですね。 オートフィルで簡単にできそうではありますが。 以下のような形でいかがでしょうか。 コピー元のセルを選択するのに、変数を使って右に3つ飛ばし、 繰り返しの処理をさせています。 シート名は実際のシート名をセットしてください。 また、変数名はお好きなものにしてください。 ====================================== 'コピー元と貼り付け先セルの位置変数 Dim copyCell As Long Dim pasteCell As Long 'コピー元と貼り付け先セルの位置変数 copyCell = 1 pasteCell = 1 'コピー元セルの内容がNULLか空白になるまで繰り返し Do Until IsNull(Worksheets("Sheet1").Cells(1, copyCell).Value) Or Worksheets("Sheet1").Cells(1, copyCell).Value = ""   Sheets("Sheet1").Select     'Sheet1を選択   Cells(1, copyCell).Select    'Sheet1のセルを選択   Selection.Copy          '選択したセルの内容をコピー   Sheets("Sheet2").Select     'Sheet2を選択   Cells(1, pasteCell).Select   'Sheet2のセルを選択   ActiveSheet.Paste        'コピーしたセルの内容を貼り付け   copyCell = copyCell + 3     '選択するセル用の変数を3加算(右へ3ずらすため)   pasteCell = pasteCell + 1    '貼り付けするセル用の変数を1加算(右へ1ずらすため) Loop ======================================

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • EXCEL シート間でのデータ参照

    例えば同じファイル内のSheet1に    A  B ←行 1  2  3 ↑ 列  のデータがあってSheet2にSheet1のデータを参照した関数を。何でもいいんですが例えば    A   1 合計 ←タイトル 2  5 Sheet1のデータの合計数をSheet2のA2に表示させるようなことって可能でしょうか? 同一のデータをシート単位で異なる関数を使って加工出来ればと思い投稿しました。よろしくお願いします。

  • Excelにて、参照先のセル列を求めるには?

    教えて頂きたいのですが、 Excelにてシート1に、1の段から9の段までの九九表があります。 その九九表よりシート2のA1に『=』で、 ランダムに答えを持ってくるとします。 そしてさらに、シート3のA1に、シート2のA1を参照して シート1の列が出せるようにするには どうすれば良いのでしょうか? 例を出すと、 シート1のD6=24 (D=4列目 、 6=6行目)を、 シート2のA1に参照させました。 シート2のA1には24(式は『=D6』)が入っています。 シート3のA1にシート2のA1を参照させて、 『4』(4列目)と表示させるには どういう関数式を入れれば出来ますか? もちろんシート2のA1は その都度ランダムで、入れるセル番号が変わります。 また、九九表というのはあくまで例です。 実際には専門用語の入った一覧表になっていますので、 九九のような、前後に関連性がある表ではありません。 ただ、参照しているセルの前のセルまで さかのぼってセル情報を取得出来る方法を知りたいのです。 こういうことって可能でしょうか? 分かる方教えて下さい。宜しくお願い致します。

  • Excelセルの参照

    Excelにdataとnという2シートがあります。dataシートのA列3行目~22行目にデータが縦入力されており、以降B列、C列とデータ入力が繰り返されます。 nシートでdataシートの入力値参照のため、あらかじめdataシートの参照リンクを貼っておきたいのですが、nシートのデータは横並びであるせいか、参照リンクをうまくコピーすることができません。 dataセルのA3セルの値をnシートのD1に=data!A3と貼り付けて、W1(=data!A22)まで数式を自動コピーできないでしょうか。また、D2~W2まで=data!B3~=data!B22など参照リンクをコピーで作成できないでしょうか。 よろしくお願いいたします。 横並びに参照する必要があるのですが、

  • セルを参照し、複数の列の文字を返す方法

    Sheet1のA1に「あいうえお」と入力します。 その文字をSheet2のA1から参照して、Sheet1のB1のセルに、Sheet2のB1~D1の列の文字を返したいです。 vlokkupでは、1つの列しか返しませんが、私は、複数の列の文字を返したいので、 Sheet1に「Sheet1のA1とSheet2のA1が同じならば、Sheet2のB1~D1までのデータを返す(列数が少ないので、CONCATENATEではなく&にしました)」 =if(a1=sheet2!a1,sheet2!b2&sheet2!C2&sheet2!D2,"") これを、ネストして、B1=sheet2!B1~としました。 しかし、ネストに限界があるのをウッカリ忘れてしまい・・・・ 他の関数で代用はできませんでしょうか? VLOOKUPは、1つの列しか返せず、困っております。

  • Excelの関数を使用したセルをコピーする場合

    よろしくです。 Sheet2のA1~G1にデータがあり、これをSheet1のB1~B7に縦にコピーします。 単純にコピーならばペーストでできますが、Sheet2のデータの変更をSheet1に反映できるように関数でSheet1に入力しようとしていますが関数がうまく見つかりません。 Sheet1には、Sheet2の行は固定で列を移動させて反映するような関数で考えていますが、いい関数があるでしょうか。 うまく表現できているか不安ですが、ご教授いただければと思います。

  • エクセルでのセルの参照

    sheet1にデータが入力されています。 そしてsheet2ではそのsheet1に入っているデータを 抽出するsheetとして使用しています。 そこで、sheet2にある一つのセルに3と入力したら sheet1で使用しているA3、B3、C3、D3・・・ のセルのデータを、 4と入力したら A4、B4、C4、D4・・・ のセルのデータをsheet2のそれぞれのセルに引っぱってこれるように 関数を書きたいと考えています。 INDIRECTが機能的に近いのかなと考え、式を試してみたのですが なかなかうまくいきません。 また、4と入力したときにA5、B5、C5、D5を参照するというように 数値をいじったりできるであればそれも教えていただきたいです。 よろしくお願いいたします。

  • EXCELでの参照

    1つ目のデータ…A列に名前 B列に数字 2つ目のデータ…D列に名前 E列に数字 1つ目と2つ目のデータを比較した場合 A列の名前からD列の名前と同じものを選び出して その隣にある数字に関して以下の様にしたい場合 ・同じ数字だった場合、F列に0もしくは空欄 ・違う数字だった場合、F列にEの数引くBの数 を反映させたいです。どうしたらいいでしょうか? (名前の並んでいる順番はAとD列では揃っていない場合)

  • Excelのセル参照について

    範囲(例:2010/1/1~2010/2/1)を指定して更新すると、日にちと値を外部データから取得し、 ExcelのSheet2のA列に日にち、B列に値を表示しています。 データは月単位で拾ってきて、Sheet2に表示しています。 たとえば、2010/1/1~2010/2/1とすると、1月のデータを取得してきて、 2010/2/1~2010/3/1とすると、2/1~今日までのデータを取得してきます。 そのSheet2に表示しているB列のデータをSheet1のセルD列にセル参照しているのですが、 たとえば、2010/1/1~2010/2/1までのデータは、Sheet1のセルD1に「=Sheet2!B1」と記入して、以下オートフィルでうまくいくのですが、 2010/2/1~2010/3/1までとすると、2/1から今日までのデータはうまく表示され、 今日以降のデータはSheet2が空白なので、Sheet1で「=Sheet2!#REF!」となってしまい、以降、Sheet2にデータが取得されてもうまくセル参照されません。 Sheet1のD列の式を下記にしても、現象はかわりませんでした。 =If(Sheet2!B1="","",Sheet2!B1) =IF(ISBLANK(Sheet2!B1),"",Sheet2!B1) Sheet2で今日以降のデータが空白でも、Sheet1が「#REF」とならないように、 また、今日以降のデータは取得された際、うまく表示されるようにするのは、 どうしたらよいのでしょうか。

  • Excel関数/複数列を対象にデータ参照するには

    - Sheet 1 -   A   B  C  D 1 09:00 G  H  J 2 10:00 K  L  M 3 11:00 N  P  Q 4 12:00 R  S  T - Sheet 2 -   A   B 1 G 2 H 3 J 4 K 5 L 6 M 7 N 8 P (以下略) となっているブックがあるとお考え下さい。 シート1のA列は時刻、B~D列は仕事内容を意味する文字列データが入っています。 シート2では仕事内容がA列に並んでいます(順番はJISコード順ではありません)。 シート2のB列に、仕事内容に対応する時刻データ(シート1のA列)を転記したいと考えています(たとえばB4には"10:00"、B8には"11:00"が入る)。シート1が書き換わるのに応じてシート2のB列に変更内容を反映させるには、どのような数式を設定すればよいでしょうか。 なお、シート1のB~D列は空欄もあり得ます。 VLOOKUP関数でできるか、と思ったのですが、複数の参照列がある場合は適当でないようです。INDEXとMATCHを組み合わせてあれこれ思案していますが、どうもいい方法が思い浮かびません。 VBAの方が簡単なのかもしれませんが、関数でのスマートな実現方法があれば御教示いただければ幸いです。よろしくお願いします。