Excel VBA質問箱 IV

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

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


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

【29953】繰り返し処理 超初心者 05/10/17(月) 14:51 質問[未読]
【29959】Re:繰り返し処理 とまと 05/10/17(月) 15:29 回答[未読]
【29960】Re:繰り返し処理 ichinose 05/10/17(月) 15:41 発言[未読]
【29961】Re:繰り返し処理 超初心者 05/10/17(月) 15:57 発言[未読]
【29962】Re:繰り返し処理 とまと 05/10/17(月) 16:03 発言[未読]
【29971】Re:繰り返し処理 kobasan 05/10/17(月) 16:53 回答[未読]
【30009】Re:繰り返し処理 超初心者 05/10/18(火) 11:10 お礼[未読]

【29953】繰り返し処理
質問  超初心者  - 05/10/17(月) 14:51 -

引用なし
パスワード
     A    B     C    D     E
1 受付日 受付番号  No.    担当  製品型式
2 10/15  1     1    山田   A-3
3           2        B-4
4           3        A-8
5           4        C-11
6 10/17  2          鈴木  A-3
                   D5

受付処理を自動化しています。1つの受付番号に複数の製品型式があります。
受付する時にC列の最終行からE列の最終行までC列に1から連番を振りたいのです。
今かいているコードでは全部に1を入力してしまいます。よろしくご教授ください。

  〜略〜
上 = Range("c65536").End(xlUp).Row + 1
   下 = Range("e65536").End(xlUp).Row
   For RowNo = 上 To 下
 
   Range("c" & RowNo) = Range("c" & RowNo) + 1
 Next

  〜以下略〜

【29959】Re:繰り返し処理
回答  とまと  - 05/10/17(月) 15:29 -

引用なし
パスワード
   どうぞ。

With Range("E2", Range("E65536").End(xlUp)).Offset(, -2)
.Formula = "=row()-1"
.Value = .Value
End With

【29960】Re:繰り返し処理
発言  ichinose  - 05/10/17(月) 15:41 -

引用なし
パスワード
   ▼超初心者 さん:
こんにちは。

>  A    B     C    D     E
>1 受付日 受付番号  No.    担当  製品型式
>2 10/15  1     1    山田   A-3
>3           2        B-4
>4           3        A-8
>5           4        C-11
>6 10/17  2          鈴木  A-3
>                   D5
>
>受付処理を自動化しています。1つの受付番号に複数の製品型式があります。
>受付する時にC列の最終行からE列の最終行までC列に1から連番を振りたいのです。
>今かいているコードでは全部に1を入力してしまいます。よろしくご教授ください。
このご質問の解法は、色々な方法があると思います。
データの配置まで記述していただいたのですが、

マクロ実行前のデータの配置
 
マクロの実行(コード記述)

マクロ実行後のデータの配置

つまり、実行前又は、実行後のデータの構成が抜けています。

そして、これが問題をわかりづらくしています。

>  〜略〜
>上 = Range("c65536").End(xlUp).Row + 1
>   下 = Range("e65536").End(xlUp).Row
>   For RowNo = 上 To 下
> 
     If rowno = 上 Then
      Range("c" & rowno).Value = 1
     Else
      Range("c" & rowno).Value = Range("c" & rowno - 1).Value + 1
      End If
>    Next
>
>  〜以下略〜

シートの構成表がマクロ実行前だとすると、こんな↑方法も考えられますが・・。

【29961】Re:繰り返し処理
発言  超初心者  - 05/10/17(月) 15:57 -

引用なし
パスワード
   ▼ichinose さん:
実行前
  A    B     C    D     E 
1 受付日 受付番号  No.    担当   製品型式
2 10/15  1     1     山田   A-3
3           2          B-4
4           3          A-8
5           4          C-11
実行後

  A    B     C    D     E 
1 受付日 受付番号  No.    担当    製品型式
2 10/15  1     1     山田    A-3
3           2           B-4
4           3           A-8
5           4           C-11
6 10/17  2     1      鈴木    A-3
            1           D5
となっています。これを1,2という連番にしたいのです。
よろしくお願いします。

【29962】Re:繰り返し処理
発言  とまと  - 05/10/17(月) 16:03 -

引用なし
パスワード
   超初心者 さん こんにちは。

単純な連番ではないのですね。
担当者ごとに連番を振るという
ことでしょうか?
それだと
7行目のC列は1ではなくて2じゃないですか?

投稿するときに等幅にチェックすると
レイアウトが崩れないようです。

【29971】Re:繰り返し処理
回答  kobasan  - 05/10/17(月) 16:53 -

引用なし
パスワード
   みなさん 今晩は。

こんな感じですか。

Sub test()
Dim LastR As Integer, r As Integer, cnt As Integer
  
  LastR = ActiveSheet.UsedRange.Rows.Count
  For r = 2 To LastR
    If Cells(r, "B").Value > 0 Then
      cnt = 1
      Cells(r, "C").Value = 1
    Else
      Cells(r, "C").Value = Cells(r - 1, "C").Value + 1
    End If
  Next
End Sub

【30009】Re:繰り返し処理
お礼  超初心者  - 05/10/18(火) 11:10 -

引用なし
パスワード
   皆様
レスありがとうございました。大変勉強になりました。
kobasanさまのコードで思うような結果をだすことができました

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