プロが教える店舗&オフィスのセキュリティ対策術

関数など調べてみたのですが、うまくできずに投稿しました。

現在WindowsVistaでEXCEL2007を用いています。

シート1枚目には
A1・・D1・・G1・・と2列おきにデータが並んでいます。
このデータをシート2枚目の
A1
A2
A3
に次々と反映させたいと思っています。

反映させたいデータが途方もない数なので、
関数などで早く処理できる方法がありましたら、
ぜひ教えてください。
よろしくお願いいたします。

A 回答 (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))
    • good
    • 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

======================================
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています