Excel VBA質問箱 IV

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

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


5146 / 13646 ツリー ←次へ | 前へ→

【52391】セル内の文字の検索と貼り付け bon 07/11/12(月) 18:18 質問[未読]
【52392】Re:セル内の文字の検索と貼り付け 1or8 07/11/12(月) 18:35 発言[未読]
【52394】Re:セル内の文字の検索と貼り付け bon 07/11/12(月) 19:01 質問[未読]
【52396】Re:セル内の文字の検索と貼り付け 1or8 07/11/12(月) 19:21 発言[未読]
【52397】Re:セル内の文字の検索と貼り付け bon 07/11/12(月) 19:26 お礼[未読]

【52391】セル内の文字の検索と貼り付け
質問  bon  - 07/11/12(月) 18:18 -

引用なし
パスワード
   Excelで下記のような表を作りました。

商品名      単価     備考
Word入門      1000     加藤
Word応用      2000     田中
Excel入門      1000     山本
Excel応用      2000     高橋
Word入門      1200     木村

この中で“Word入門”が商品名の中に2つ入っているのですが、
表の中から“Word入門”が見つかったら、その隣にある
単価と備考のデータをコピーして貼り付けをしたいと思いました。
そこで、下記のようなVBAを作ってみましたが、
うまくいきませんでした。
どの様に修正したら良いのかもわからず困っています。

Sub kensaku()

  Dim i As Integer
  Dim cpyname As String
  
  i = 1
 
  Do Until Cells(i + 1, "A").Value = ""
  
  If Cells(i, 1).Value = "Word入門" Then
  Range(Cells(i, 2), Cells(i, 3)).Select
  Selection.Copy
  Range("E1").Activate
  ActiveCell.PasteSpecial
  
  End If
  i = i + 1
  Loop
    
End Sub

ご存知の方、もしくは何かアドバイスをいただければ
幸いです。
何卒宜しくお願い致します。

【52392】Re:セル内の文字の検索と貼り付け
発言  1or8  - 07/11/12(月) 18:35 -

引用なし
パスワード
   ▼bon さん:
こんばんは。

>Excelで下記のような表を作りました。
>
>商品名      単価     備考
>Word入門      1000     加藤
>Word応用      2000     田中
>Excel入門      1000     山本
>Excel応用      2000     高橋
>Word入門      1200     木村
>
>この中で“Word入門”が商品名の中に2つ入っているのですが、
>表の中から“Word入門”が見つかったら、その隣にある
>単価と備考のデータをコピーして貼り付けをしたいと思いました。
>そこで、下記のようなVBAを作ってみましたが、
>うまくいきませんでした。
>どの様に修正したら良いのかもわからず困っています。
>
>Sub kensaku()
>
>  Dim i As Integer
>  Dim cpyname As String
>  
>  i = 1
> 
>  Do Until Cells(i + 1, "A").Value = ""
  Do Until Cells(i, "A").Value = ""
>  
>  If Cells(i, 1).Value = "Word入門" Then
>  Range(Cells(i, 2), Cells(i, 3)).Select
>  Selection.Copy
>  Range("E1").Activate
   ↑このままですと、Word入門が何個あろうが常にE1に貼り付けを行ってしまいますよ!
   Range("E" & i ).Activate とか?
>  ActiveCell.PasteSpecial
>  
>  End If
>  i = i + 1
>  Loop
>    
>End Sub
>
>ご存知の方、もしくは何かアドバイスをいただければ
>幸いです。
>何卒宜しくお願い致します。

【52394】Re:セル内の文字の検索と貼り付け
質問  bon  - 07/11/12(月) 19:01 -

引用なし
パスワード
   1or8 さん

こんばんは。
アドバイスありがとうございます。
仰るとおりですね。実行してみたらできました。

ちなみに、常に隣に貼り付けるのではなくて、
E列に詰めて貼り付ける事は可能でしょうか?

E列・F列で
オブジェクト.SpecialCells(xlCellTypeBlanks).Select
オブジェクト.Delete Shift:=xlShiftUp

上記の内容が実行できれば良いのかと思いますが、
申し訳ございませんが、ご教授お願い致します。


▼1or8 さん:
>▼bon さん:
>こんばんは。
>
>>Excelで下記のような表を作りました。
>>
>>商品名      単価     備考
>>Word入門      1000     加藤
>>Word応用      2000     田中
>>Excel入門      1000     山本
>>Excel応用      2000     高橋
>>Word入門      1200     木村
>>
>>この中で“Word入門”が商品名の中に2つ入っているのですが、
>>表の中から“Word入門”が見つかったら、その隣にある
>>単価と備考のデータをコピーして貼り付けをしたいと思いました。
>>そこで、下記のようなVBAを作ってみましたが、
>>うまくいきませんでした。
>>どの様に修正したら良いのかもわからず困っています。
>>
>>Sub kensaku()
>>
>>  Dim i As Integer
>>  Dim cpyname As String
>>  
>>  i = 1
>> 
>>  Do Until Cells(i + 1, "A").Value = ""
>  Do Until Cells(i, "A").Value = ""
>>  
>>  If Cells(i, 1).Value = "Word入門" Then
>>  Range(Cells(i, 2), Cells(i, 3)).Select
>>  Selection.Copy
>>  Range("E1").Activate
>   ↑このままですと、Word入門が何個あろうが常にE1に貼り付けを行ってしまいますよ!
>   Range("E" & i ).Activate とか?
>>  ActiveCell.PasteSpecial
>>  
>>  End If
>>  i = i + 1
>>  Loop
>>    
>>End Sub
>>
>>ご存知の方、もしくは何かアドバイスをいただければ
>>幸いです。
>>何卒宜しくお願い致します。

【52396】Re:セル内の文字の検索と貼り付け
発言  1or8  - 07/11/12(月) 19:21 -

引用なし
パスワード
   ▼bon さん:
こんばんは。

>ちなみに、常に隣に貼り付けるのではなくて、
>E列に詰めて貼り付ける事は可能でしょうか?
方法は異なりますが、こんなのはどうでしょうか?

>Sub kensaku()
>
>  Dim i As Integer
>  Dim cpyname As String
   Dim j As Long '追加
>  
>  i = 1
   j = 1 '追加
> 
>  Do Until Cells(i, "A").Value = ""
>  
>  If Cells(i, 1).Value = "Word入門" Then
    Range(Cells(i, 2), Cells(i, 3)).Copy 'ちょっと簡潔に
    Range("E" & j + 1).PasteSpecial 'ちょっと簡潔に
    j = j + 1 '追加
>  End If
>
>  i = i + 1
>  Loop
>    
>End Sub

【52397】Re:セル内の文字の検索と貼り付け
お礼  bon  - 07/11/12(月) 19:26 -

引用なし
パスワード
   1or8 さん

ありがとうございます。
しかも、簡略化までしていただきまして、
スッキリしました。

VBA難しいですが、面白いですね。
感謝します!


▼1or8 さん:
>▼bon さん:
>こんばんは。
>
>>ちなみに、常に隣に貼り付けるのではなくて、
>>E列に詰めて貼り付ける事は可能でしょうか?
>方法は異なりますが、こんなのはどうでしょうか?
>
>>Sub kensaku()
>>
>>  Dim i As Integer
>>  Dim cpyname As String
>   Dim j As Long '追加
>>  
>>  i = 1
>   j = 1 '追加
>> 
>>  Do Until Cells(i, "A").Value = ""
>>  
>>  If Cells(i, 1).Value = "Word入門" Then
>    Range(Cells(i, 2), Cells(i, 3)).Copy 'ちょっと簡潔に
>    Range("E" & j + 1).PasteSpecial 'ちょっと簡潔に
>    j = j + 1 '追加
>>  End If
>>
>>  i = i + 1
>>  Loop
>>    
>>End Sub

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