アプリ版:「スタンプのみでお礼する」機能のリリースについて

複数のセルのコピー、その後その情報を操作してペーストする方法がわかりません。

シート1にある情報は、

A1:E8は、1行づつ統合されています。A1:E1が統合されておりvalue=「1」、A2:E2が統合されておりvalue=「2」、・・A8:E8が統合されておりvalue=「8」、という具合です。
A9:E19は、統合されておらず、それぞれのセルに情報が入っています。
それらA1:E19を1単位として、右隣に同じ形式(2単位目はF1:J19)の情報が100個ほど並んでいます。

このシート1に対し、

Set IntTest = Application.InputBox(Prompt:="範囲をドラッグしてください。",Type:=8)

で「$A$1:$E$8,$B$9:$B$19」と入力したら、その情報をコピーして、別シート2のA列1列にそれらの情報をペーストしたいのです。その後次々に、シート1の入力した単位の隣の単位に対しても同じことをしていきたいのです。シート1の2単位目のF1:J19に対して、相対的に同じ部分をシート2のB列1列に貼り付け・・という具合に。

よろしくお願いします。

A 回答 (1件)

> A1:E19を1単位として、右隣に同じ形式(2単位目はF1:J19)の情報が


> 100個ほど並んでいます。

100 個というのが意味不明です。

A ~ E 列なら 1 単位辺り 5 列なので、100 単位となると 5 × 100 で
500 列必要になりますね。。Excel2007?

若しくは、5 列 × 20 単位 = 100 列 という意味ですか?

>「$A$1:$E$8,$B$9:$B$19」と入力したら、その情報をコピーして、
> 別シート2のA列1列にそれらの情報をペーストしたいのです。

仮に、「$A$1:$E$8,$B$9:$F$19」が選択された場合はどうします?


ポイントになりそうなのは、

  1. MergeArea
  2. Offset

ですかね。。働きはヘルプで調べてみて下さい。

結合セルの値は、結合セルの一番左角のセルから取得します。例えば
A1:C10 が結合されているなら A1、F10:J20 なら F10 のように。

ご希望の動作を正しく理解している自信がありませんが、とりあえず
テストコードということで回答してみます。

Sub macro()
  
  Dim Sh  As Worksheet
  Dim rSrc As Range
  Dim r   As Range
  Dim i   As Long
  Dim lRow As Long
  Dim lCol As Long

  Set rSrc = Application.InputBox( _
        Prompt:="範囲をドラッグしてください。", _
        Type:=8)
  If rSrc Is Nothing Then Exit Sub
  
  Set Sh = Worksheets.Add(After:=ActiveSheet)
  lRow = 1
  lCol = 1
  For i = 1 To 20
    For Each r In rSrc
      ' // MergeArea で取得されるセルの一番左角のセルであった時
      ' // のみ転記処理を行う。結合セルであるかどうかは問題ではない
      If r.Address = r.MergeArea(1).Address Then
        Sh.Cells(lRow, lCol).Value = r.Value
        lRow = lRow + 1
      End If
    Next
    ' // 1単位は 5 列で構成されるので、次の単位における
    ' // 同位置は Offset(0,5)
    Set rSrc = rSrc.Offset(0, 5)
    lRow = 1
    lCol = lCol + 1
  Next
  Set rSrc = Nothing

End Sub
    • good
    • 0
この回答へのお礼

つたない質問から、良い回答を書いていてありがとうございます。
If r.Address = r.MergeArea(1).Address Then
の部分、特に参考になりました。ありがとうございました。

お礼日時:2007/05/04 23:02

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