Excel VBA質問箱 IV

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

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


7859 / 13645 ツリー ←次へ | 前へ→

【36422】名前が一致したらデータを別シートに貼り... ようちゃん 06/3/30(木) 18:42 質問[未読]
【36424】Re:名前が一致したらデータを別シートに貼... Kein 06/3/30(木) 19:21 発言[未読]
【36425】Re:名前が一致したらデータを別シートに貼... Kein 06/3/30(木) 19:23 発言[未読]
【36426】Re:名前が一致したらデータを別シートに貼... ようちゃん 06/3/30(木) 19:34 質問[未読]
【36428】Re:名前が一致したらデータを別シートに貼... Kein 06/3/30(木) 20:03 回答[未読]

【36422】名前が一致したらデータを別シートに貼り...
質問  ようちゃん  - 06/3/30(木) 18:42 -

引用なし
パスワード
   はじめまして。
表形式になっているシート(Sheet1)と別のブックから
コピーしたデータがあるシート(Sheet2)があります。
表形式になっているシートの順番は変えたくないので
その中の複数のセルにデータをコピーしたいと思っています。
データ量がかなりあるのでVBAを使ってコピーを
したいと考えています。
Sheet1とSheet2のデータの並び順は
バラバラなので両方の名前が一致したらSheet1の
指定したセルにSheet2のデータを貼り付けたいのです。

Sheet1 サンプル
名前            週   売上    ノルマ
キャサリンゼタジョーンズ 1週目  3,000,000  5,000,000
キャサリンゼタジョーンズ 2週目  4,600,000  5,000,000
キャサリンゼタジョーンズ 3週目  3,000,000  4,000,000
キャサリンゼタジョーンズ 4週目  2,000,000  4,000,000
キャサリンゼタジョーンズ 5週目  4,150,000  4,000,000
アンジェリーナジョリー  1週目  2,505,000  4,500,000
アンジェリーナジョリー  2週目  2,850,000  3,500,000
アンジェリーナジョリー  3週目  2,505,000  4,500,000
アンジェリーナジョリー  4週目  2,700,000  4,500,000
アンジェリーナジョリー  5週目  3,500,000  4,500,000
ニコールキッドマン    1週目  2,000,000  5,000,000
ニコールキッドマン    2週目  3,000,000  5,000,000
ニコールキッドマン    3週目  7,800,000  6,000,000
ニコールキッドマン    4週目  3,000,000  6,500,000
ニコールキッドマン    5週目  5,600,000  6,000,000
    ・         ・    ・     ・
    ・         ・    ・     ・
    ・         ・    ・     ・

Sheet2 サンプル
    氏名           1週目       2週目  ・・・ 5週目
1 アンジェリーナジョリー   売上 2,505,000  売上 2,850,000・・・ 売上
2 アンジェリーナジョリー  ノルマ 4,500,000 ノルマ3,500,000・・・ ノルマ
3 キャサリンゼタジョーンズ  売上 2,505,000  売上 2,850,000・・・ 売上
4 キャサリンゼタジョーンズ ノルマ 5,500,000 ノルマ5,000,000・・・ ノルマ5 ニコールキッドマン     売上 2,000,000  売上 3,000,000・・・ 売上
6 ニコールキッドマン    ノルマ 5,000,000 ノルマ5,000,000・・・ ノルマ
    ・             ・        ・
    ・             ・        ・
Sheet1のデータの並びは一人5行あり上から1週目、2週目となっています。
ですが、あいうえお順に並んでいないためSheet2の表にあてはめるときには
どうすればよいのでしょうか。

どなたかお分かりになる方がいらっしゃいましたら
教えてください。

【36424】Re:名前が一致したらデータを別シートに...
発言  Kein  - 06/3/30(木) 19:21 -

引用なし
パスワード
   Sheet2 の方は、正確にはどの列にどのようなデータが入ってますか ? つまり
    A         B     C     D    E
アンジェリーナジョリー   売上  2,505,000  売上  2,850,000

ということなのか・・
    A           B       C
アンジェリーナジョリー  売上 2,505,000  売上 2,850,000

ということなのか ? です。もし後者であるとすれば、"売上"の文字と数値の間には
半角スペース1個が挟まれている、と解釈できますか ?
あと、1行目は項目になってますか ?

【36425】Re:名前が一致したらデータを別シートに...
発言  Kein  - 06/3/30(木) 19:23 -

引用なし
パスワード
   あ、ちょっとずれましたね。要するに B列以降はまとめて「売上 2,505,000」などと
入力されているのか ? ということです。

【36426】Re:名前が一致したらデータを別シートに...
質問  ようちゃん  - 06/3/30(木) 19:34 -

引用なし
パスワード
   keinさん

質問をお読みくださりありがとうございます。
売上と金額は別のセルに入っています。
サンプルでは判りやすくするために書いています。
これで回答できていますでしょうか。

【36428】Re:名前が一致したらデータを別シートに...
回答  Kein  - 06/3/30(木) 20:03 -

引用なし
パスワード
   了解しました。ではこんな感じのコードで、試してみて下さい。

Sub Test_MyDataCopy()
  Dim Sh As Worksheet
  Dim MyR As Range, C As Range
  Dim Col As Integer, i As Integer, j As Integer
  Dim GtR As Variant
  Dim Ary(1 To 5) As Long
 
  With Worksheets("Sheet2")
   Set MyR = .Range("A2", .Range("A65536").End(xlUp))
  End With
  Set Sh = Worksheets("Sheet1")
  For Each C In MyR
   GtR = Application.Match(C.Value, Sh.Range("A:A"), 0)
   If IsError(GtR) Then GoTo NLine
   If C.Offset(, 1).Value = "売上" Then
     Col = 3
   ElseIf C.Offset(, 1).Value = "ノルマ" Then
     Col = 4
   End If
   i = 0
   For j = 2 To 10 Step 2
     i = i + 1
     Ary(i) = C.Offset(, j).Value
   Next j
   Sh.Cells(GtR, Col).Resize(5).Value = _
   WorksheetFunction.Transpose(Ary)
   Erase Ary
NLine:
  Next
  Set MyR = Nothing: Set Sh = Nothing
End Sub

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