• 締切済み

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