Excel VBA質問箱 IV

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

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


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

【49309】条件に対して条件の場所に転記したい。 かおピ 07/5/31(木) 0:46 質問[未読]
【49372】Re:条件に対して条件の場所に転記したい。 かおピ 07/6/2(土) 20:00 質問[未読]
【49373】Re:条件に対して条件の場所に転記したい。 とおりすがり 07/6/2(土) 20:12 発言[未読]
【49385】Re:条件に対して条件の場所に転記したい。 かおピ 07/6/3(日) 14:30 発言[未読]
【49374】Re:条件に対して条件の場所に転記したい。 ponpon 07/6/2(土) 21:18 発言[未読]
【49377】Re:条件に対して条件の場所に転記したい。 りん 07/6/3(日) 9:00 回答[未読]
【49387】Re:条件に対して条件の場所に転記したい。 かおピ 07/6/3(日) 17:14 お礼[未読]

【49309】条件に対して条件の場所に転記したい。
質問  かおピ  - 07/5/31(木) 0:46 -

引用なし
パスワード
   こんばんは。何度も転記のことを質問しています。
すみません。条件のに合ったものを条件の場所に転記したいです。
教えてください。
sheet1
A列   B列   C列    D列   E列
名前  金額   担当   訂正1  訂正2
田中  70   板谷    1   
白神  300  森屋    2
佐藤  900  板谷    1     1
羽田  450  青木          1・・・*  
織田  500  板谷    1     1  

sheet2
A列   B列   C列    D列   E列   F列
訂正日 名前  受1   受2    受3   担当
 /    田中  70               板谷
 /    白神       300         森屋
 /    佐藤             900   板谷
 /    織田             500   板谷 

このようにsheet1の訂正1と訂正2に上記のような数字が入ったら
sheet2の受1.受2.受3へ数字を転記したいです。
ただし、・・・*のようにsheet1の訂正1に数字が入らず訂正2に1が入っても
転記はしない。(基準は、訂正1にあります。)
sheet2の訂正日は、当日の日付(5/31)を転記したいです。
よろしくお願いします。

【49372】Re:条件に対して条件の場所に転記したい。
質問  かおピ  - 07/6/2(土) 20:00 -

引用なし
パスワード
   こんばんは、なかなか前に進めず、困っております。
お知恵をおかしください。感謝します。

>こんばんは。何度も転記のことを質問しています。
>すみません。条件のに合ったものを条件の場所に転記したいです。
>教えてください。
>sheet1
>A列   B列   C列    D列   E列
>名前  金額   担当   訂正1  訂正2
>田中  70   板谷    1   
>白神  300  森屋    2
>佐藤  900  板谷    1     1
>羽田  450  青木          1・・・*  
>織田  500  板谷    1     1  
>
>sheet2
>A列   B列   C列    D列   E列   F列
>訂正日 名前  受1   受2    受3   担当
> /    田中  70               板谷
> /    白神       300         森屋
> /    佐藤             900   板谷
> /    織田             500   板谷 
>
>このようにsheet1の訂正1と訂正2に上記のような数字が入ったら
>sheet2の受1.受2.受3へ数字を転記したいです。
>ただし、・・・*のようにsheet1の訂正1に数字が入らず訂正2に1が入っても
>転記はしない。(基準は、訂正1にあります。)
>sheet2の訂正日は、当日の日付(5/31)を転記したいです。
>よろしくお願いします。

【49373】Re:条件に対して条件の場所に転記したい。
発言  とおりすがり  - 07/6/2(土) 20:12 -

引用なし
パスワード
   回答でなくすみません。

埋もれてしまったスレッドを引き上げるためだけに
書込みすることは「サルベージ行為」といいネチケット
違反です。
お気持ちは分かりますが、ネチケットはお守りください。

【49374】Re:条件に対して条件の場所に転記したい。
発言  ponpon  - 07/6/2(土) 21:18 -

引用なし
パスワード
   ▼かおピ さん:
>>こんばんは。何度も転記のことを質問しています。
>>すみません。条件のに合ったものを条件の場所に転記したいです。
>>教えてください。
>>sheet1
>>A列   B列   C列    D列   E列
>>名前  金額   担当   訂正1  訂正2
>>田中  70   板谷    1   
>>白神  300  森屋    2
>>佐藤  900  板谷    1     1
>>羽田  450  青木          1・・・*  
>>織田  500  板谷    1     1  
>>
>>sheet2
>>A列   B列   C列    D列   E列   F列
>>訂正日 名前  受1   受2    受3   担当
>> /    田中  70               板谷
>> /    白神       300         森屋
>> /    佐藤             900   板谷
>> /    織田             500   板谷 
>>
>>このようにsheet1の訂正1と訂正2に上記のような数字が入ったら
>>sheet2の受1.受2.受3へ数字を転記したいです。
>>ただし、・・・*のようにsheet1の訂正1に数字が入らず訂正2に1が入っても
>>転記はしない。(基準は、訂正1にあります。)
>>sheet2の訂正日は、当日の日付(5/31)を転記したいです。
>>よろしくお願いします。

私にはできないかもしれませんが、いくつか質問があります。

(1)マクロを実行するタイミングは、訂正1に数字が記入された時でしょうか?
 もしそうなら、訂正2に数字が記入された時はどうしますか?
(2)受1.受2.受3に振り分ける基準(規則性)は、どうなっているのでしょうか?
 つまり、どんな場合に、受1に数字を転記し、
     どんな場合に、受2に数字を転記し、
     どんな場合に、受3に数字を転記するのかわかりません。

【49377】Re:条件に対して条件の場所に転記したい。
回答  りん E-MAIL  - 07/6/3(日) 9:00 -

引用なし
パスワード
   かおピ さん、おはようございます。

>>このようにsheet1の訂正1と訂正2に上記のような数字が入ったら
>>sheet2の受1.受2.受3へ数字を転記したいです。
>>ただし、・・・*のようにsheet1の訂正1に数字が入らず訂正2に1が入っても
>>転記はしない。(基準は、訂正1にあります。)
>>sheet2の訂正日は、当日の日付(5/31)を転記したいです。
>>よろしくお願いします。

ベタに転記していくなら。
Option Explicit
Sub test()
  Dim ws(1 To 2) As Worksheet
  Dim RR As Long, Rpos As Long, Rmax As Long, CC As Integer
  With Application.ThisWorkbook
   Set ws(1) = .Worksheets("Sheet1") '元
   Set ws(2) = .Worksheets("Sheet2") '先
  End With
  '
  Rmax = ws(1).Range("A65536").End(xlUp).Row
  Rpos = ws(2).Range("A65536").End(xlUp).Row
  '表は2行目から開始
  For RR = 2 To Rmax
   With ws(1)
     '訂正1に1が入っている場合、訂正2に何が入っているかで分岐
     Select Case .Cells(RR, 4).Value
      Case 1: If .Cells(RR, 5).Value = 1 Then CC% = 3 Else CC% = 1
      Case 2:  CC% = 2
      Case Else: CC% = 0
     End Select
     '転記先の列位置(CC%)が0以外の時に転記する
     If CC% = 0 Then
      .Rows(RR).Interior.ColorIndex = 38
     Else
      Rpos = Rpos + 1
      ws(2).Cells(Rpos, 1).Value = Date
      ws(2).Cells(Rpos, 2).Value = .Cells(RR, 1).Value
      ws(2).Cells(Rpos, 2 + CC%).Value = .Cells(RR, 2).Value 'CDE
      ws(2).Cells(Rpos, 6).Value = .Cells(RR, 3).Value
     End If
   End With
  Next
  Erase ws
End Sub
こんな感じです。
動作チェックのために、転記しなかった行に色を塗っています。

なお、処理対象のデータ件数がものすごく多い場合は、配列に入れた方が転記の処理は格段に速くなります。

【49385】Re:条件に対して条件の場所に転記したい。
発言  かおピ  - 07/6/3(日) 14:30 -

引用なし
パスワード
   ▼とおりすがり さん:
本当にすみませんでした。また、ご指摘ありがとうございました。
>
>埋もれてしまったスレッドを引き上げるためだけに
>書込みすることは「サルベージ行為」といいネチケット
>違反です。
>お気持ちは分かりますが、ネチケットはお守りください。

私は無知です。色々なことに関して知らないことが多いです。
反省です。自分のことしか考えてなくて、
答えがなく、少し焦りました。こちらのサイトを今後も利用させていただきたいので、これらのことを踏まえて質問等をさせていただきます。

【49387】Re:条件に対して条件の場所に転記したい。
お礼  かおピ  - 07/6/3(日) 17:14 -

引用なし
パスワード
   ▼りん さん:
こんにちは りんさん。
今、設定終了しました。
本当にありがとうございました。

>ベタに転記していくなら。
はい、ベタの転記です。
本当に、すばらしい表ができ感謝します。
うれしく思います。ありがとうございました。
 
また、ponponさん、説明不足の点をご指摘いただき
ありがとうございました。感謝しています。

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