Excel VBA質問箱 IV

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

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


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

【19295】特定の文字を含むセルをコピーする りんりん 04/10/27(水) 16:48 質問[未読]
【19296】Re:特定の文字を含むセルをコピーする Jaka 04/10/27(水) 17:13 回答[未読]
【19331】Re:特定の文字を含むセルをコピーする りんりん 04/10/28(木) 14:11 質問[未読]
【19332】Re:特定の文字を含むセルをコピーする つん 04/10/28(木) 14:26 回答[未読]
【19341】Re:特定の文字を含むセルをコピーする りんりん 04/10/28(木) 16:01 お礼[未読]

【19295】特定の文字を含むセルをコピーする
質問  りんりん  - 04/10/27(水) 16:48 -

引用なし
パスワード
   お世話になります。
特定の文字を含むセルの値を1つ下のセルにコピー
したいのですが、offsetを使ってい試したのですが…
初心者なもので、うまくできませんでした。

例)-----------------------------------------

1HPS 合計
2       ←ここにHPS 合計をコピーする
3
4HSJ 合計
5       ←ここにHSJ 合計をコピーする
6
7
8一品 合計
9       ←ここに一品 合計をコピーする

---------------------------------------------
このようにお尻に”合計”とつくセルの値だけをA列から探して
すぐ下の行にコピーしたいのですが、どうすればよい
か教えていただけないでしょうか?
よろしくお願いします。
ちなみに、A列には○○合計の他にも文字列が
たくさん含まれています。

【19296】Re:特定の文字を含むセルをコピーする
回答  Jaka  - 04/10/27(水) 17:13 -

引用なし
パスワード
   こんにちは。
こんな感じになると思います。

for i = 1 to A列最後のセル行番号
  if cells(i,"A").value Like "*合計" Then
    cells(i,"A").offset(1,1).value = cells(i,"A").value
  End If
next

【19331】Re:特定の文字を含むセルをコピーする
質問  りんりん  - 04/10/28(木) 14:11 -

引用なし
パスワード
   jakaさん回答ありがとうございます。

>for i = 1 to A列最後のセル行番号
>  if cells(i,"A").value Like "*合計" Then
>    cells(i,"A").offset(1,1).value = cells(i,"A").value
>  End If
>next

私の説明が悪かったようですいません。
上のコードのようにoffset(1,1)では右斜め下のセルにコピーされて
しまうのですが・・・。
私がしたいのは、すぐ下の行のセルにコピーしたい
のです。
しかしoffset(1,0)にしてしまうと、

1HPS 合計
2HPS 合計     
3HPS 合計
4HPS 合計  
5  ・
6  ・
7  ・

このように同じ内容がA列にすべてコピーされてしまいます。
これを防ぐにはどうしたらよいのでしょうか?

【19332】Re:特定の文字を含むセルをコピーする
回答  つん E-MAIL  - 04/10/28(木) 14:26 -

引用なし
パスワード
   こんにちは。
Jakaさん、横からごめんにゃ!

>>for i = 1 to A列最後のセル行番号
>>  if cells(i,"A").value Like "*合計" Then
>>    cells(i,"A").offset(1,1).value = cells(i,"A").value
>>  End If
>>next
>
>私の説明が悪かったようですいません。
>上のコードのようにoffset(1,1)では右斜め下のセルにコピーされて
>しまうのですが・・・。
>私がしたいのは、すぐ下の行のセルにコピーしたい
>のです。
>しかしoffset(1,0)にしてしまうと、
>
>1HPS 合計
>2HPS 合計     
>3HPS 合計
>4HPS 合計  
>5  ・
>6  ・
>7  ・
>
>このように同じ内容がA列にすべてコピーされてしまいます。
>これを防ぐにはどうしたらよいのでしょうか?

1行目に、「合計」があったら、2行目にコピーされますよね?
で、2行目を見に行って当然「合計」がある状態だから、3行目にコピーされますよね?
上から見ていったら、これを延々と繰り返してしまいます。
なので、こういう場合は下から見ていくのがええかと思います。

  Dim lngLast As Long
  Dim i As Long
  
  lngLast = Range("a65536").End(xlUp).Row

  For i = lngLast + 1 To 2 Step -1
    処理処理
  Next

こういう形です。
Jakaさん、これでOKですよね!?

【19341】Re:特定の文字を含むセルをコピーする
お礼  りんりん  - 04/10/28(木) 16:01 -

引用なし
パスワード
   つんさん回答ありがとうございます。

>1行目に、「合計」があったら、2行目にコピーされますよね?
>で、2行目を見に行って当然「合計」がある状態だから、3行目にコピーされますよね?
>上から見ていったら、これを延々と繰り返してしまいます。
>なので、こういう場合は下から見ていくのがええかと思います。
>
>  Dim lngLast As Long
>  Dim i As Long
>  
>  lngLast = Range("a65536").End(xlUp).Row
>
>  For i = lngLast + 1 To 2 Step -1
>    処理処理
>  Next
>
>こういう形です。
>Jakaさん、これでOKですよね!?

このコードを使って試したら
うまくいきました!!
Jakaさん、つんさんどうもありがとうございました!!

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