Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13580 / 13644 ツリー ←次へ | 前へ→

【4688】表の転記方法 日高久雄 03/4/3(木) 9:11 質問
【4694】Re:表の転記方法 パピー 03/4/3(木) 11:32 回答
【4761】Re:表の転記方法 日高久雄 03/4/4(金) 16:43 お礼
【4706】Re:表の転記方法 めぎゅ 03/4/3(木) 13:21 回答
【4763】Re:表の転記方法 日高久雄 03/4/4(金) 16:45 お礼

【4688】表の転記方法
質問  日高久雄 E-MAIL  - 03/4/3(木) 9:11 -

引用なし
パスワード
   いつも お世話になります。初歩的なことで行き詰まりました。
表をつくり変えます。
例えばB表のn行目のA列にtarouとあればtarouのある行を下記のA表から探して
この行のBからE列までをB表のn行目のC列からF列までに転記したいのですが
最も簡単な方法を教えてください。 


    A    B    C    D    E
1    hanako    123    456    sad    hd
2    tarou    456    896    dsbhj    sa
3    satiko    478    456    shd    rt
4    jirou    489    156    saj    yu

【4694】Re:表の転記方法
回答  パピー  - 03/4/3(木) 11:32 -

引用なし
パスワード
   日高さん、こんにちは。
A表は、"Sheet2"のA列からとします。
B表は、現在のアクティブシートとします。
試してみて下さい。
質問の意を外していたらご免なさい。

Sub test()
Dim p As Range
 For i = 1 To Range("a65536").End(xlUp).Row
  With Sheets("Sheet2")
   Set p = .Range("A1:A4").Find(Cells(i, 1))
   If Not p Is Nothing Then
    Range("C" & i & ":F" & i).Value = .Range(p.Offset(, 1).Address(False, False) & _
     ":" & p.Offset(, 4).Address(False, False)).Value
   Else
    MsgBox "見つかりません"
   End If
  End With
 Next

【4706】Re:表の転記方法
回答  めぎゅ E-MAIL  - 03/4/3(木) 13:21 -

引用なし
パスワード
   こんにちは。
そんなにデータ量が多くなければ普通にループでまわせばよいのではないのでしょうか・・・?(あんま自信ないですけど)
あくまで力技ですけど
注:各表はファイルが違うものとしてます。

Sub 表転記()
Dim i, j As Integer

For i = 1 To 10
  For j = 1 To 10
    'B表の一列目と、A表の一列目が同じ時
    If Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 1).Value = _
      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 1).Value Then
      'B表の2列目に、A表の2列目のデータを入力します。
      Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 2).Value = _
      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 2).Value
      'B表の3列目に、A表の3列目のデータを入力します。
      Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 3).Value = _
      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 3).Value
      'B表の4列目に、A表の4列目のデータを入力します。
      Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 4).Value = _
      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 4).Value
      'B表の5列目に、A表の5列目のデータを入力します。
      Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 5).Value = _
      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 5).Value
      'B表の6列目に、A表の6列目のデータを入力します。
      Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 6).Value = _
      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 6).Value
    End If
  Next j
Next i

End Sub

10行目まで回していますが、もっとあるのなら空欄になったら抜けるようにするとか・・・。

必要なデータがtarouの場合だけでしたら、最初のif文で、

If Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 1).Value = tarou then
  '省略
End if

とすればよいかと思います。
あくまでも力技ですので、あしからず・・・。

【4761】Re:表の転記方法
お礼  日高久雄 E-MAIL  - 03/4/4(金) 16:43 -

引用なし
パスワード
   ▼パピー さん:
有難う御座いました。
とても素晴らしいです。早くこんな回答が出来るようになりたいものです。
>日高さん、こんにちは。
>A表は、"Sheet2"のA列からとします。
>B表は、現在のアクティブシートとします。
>試してみて下さい。
>質問の意を外していたらご免なさい。
>
>Sub test()
>Dim p As Range
> For i = 1 To Range("a65536").End(xlUp).Row
>  With Sheets("Sheet2")
>   Set p = .Range("A1:A4").Find(Cells(i, 1))
>   If Not p Is Nothing Then
>    Range("C" & i & ":F" & i).Value = .Range(p.Offset(, 1).Address(False, False) & _
>     ":" & p.Offset(, 4).Address(False, False)).Value
>   Else
>    MsgBox "見つかりません"
>   End If
>  End With
> Next

【4763】Re:表の転記方法
お礼  日高久雄 E-MAIL  - 03/4/4(金) 16:45 -

引用なし
パスワード
   ▼めぎゅ さん:
有難う御座いました。よく解りました。
>こんにちは。
>そんなにデータ量が多くなければ普通にループでまわせばよいのではないのでしょうか・・・?(あんま自信ないですけど)
>あくまで力技ですけど
>注:各表はファイルが違うものとしてます。
>
>Sub 表転記()
>Dim i, j As Integer
>
>For i = 1 To 10
>  For j = 1 To 10
>    'B表の一列目と、A表の一列目が同じ時
>    If Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 1).Value = _
>      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 1).Value Then
>      'B表の2列目に、A表の2列目のデータを入力します。
>      Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 2).Value = _
>      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 2).Value
>      'B表の3列目に、A表の3列目のデータを入力します。
>      Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 3).Value = _
>      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 3).Value
>      'B表の4列目に、A表の4列目のデータを入力します。
>      Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 4).Value = _
>      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 4).Value
>      'B表の5列目に、A表の5列目のデータを入力します。
>      Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 5).Value = _
>      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 5).Value
>      'B表の6列目に、A表の6列目のデータを入力します。
>      Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 6).Value = _
>      Workbooks("A.xls").Worksheets("Sheet1").Cells(j, 6).Value
>    End If
>  Next j
>Next i
>
>End Sub
>
>10行目まで回していますが、もっとあるのなら空欄になったら抜けるようにするとか・・・。
>
>必要なデータがtarouの場合だけでしたら、最初のif文で、
>
>If Workbooks("B.xls").Worksheets("Sheet1").Cells(i, 1).Value = tarou then
>  '省略
>End if
>
>とすればよいかと思います。
>あくまでも力技ですので、あしからず・・・。

13580 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free