[[20191212132200]] 『VBAで』(VBABAA) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAで』(VBABAA)

   A     B     C    D       A
1       aaa     (a)     (a)-1 
2       aaa          (a)          (a)-2
3       aaa          (a)  →    (a)-3
4       bbb          (b)          (b)-1
5      ・           ↑これを自動で出したい。
     ・

B列を参照して、A列に上記のような管理番号のようなものを出せるようにしたいです。
B列の数(aaaのセルの数)は変動し、B列を記入しきった後でマクロを走らせ、A列に番号を振りたいのですが、私の頭では、

1.B列に入る可能性のある文字列の数だけ変数を指定する。
2.countifでそれぞれの変数の最大値を調べる。
3.vlookup("(a)-"を作る) ∔ for構文で文字列を合体させる。

くらいしか思いつかないのですが、何か他の手立てはないでしょうか?

< 使用 Excel:Excel2010、使用 OS:Windows10 >


>『VBAで』
関数ではダメでしょうか?
参考程度にアップします。

A1: =IF(B1="","","("&LEFT(B1,1)&")-"&COUNTIF($B$1:B1,B1))
(メジロ) 2019/12/12(木) 13:56


アイデアが出ているなら、とりあえず現物をみせて頂いた方がアドバイスしやすいですが。。。。

提示された例を見る限りこんな感じでもいけそうです

    Sub さんぷる()
        Dim 枝番 As Long
        Dim 行 As Long

        Stop '←ブレークポイントの代わり

        行 = 1
        枝番 = 1
        Do Until Cells(行, "B").Value = ""
            Cells(行, "A").Value = "(" & Left(Cells(行, "B").Value, 1) & ")-" & 枝番

            If Cells(行, "B").Value <> Cells(行 + 1, "B").Value Then
                枝番 = 1
            Else
                枝番 = 枝番 + 1
            End If

            行 = 行 + 1
        Loop

    End Sub

(もこな2) 2019/12/12(木) 16:33


>メジロさん
なるほどです!countifの片方を絶対参照にしないことで参照範囲が増えるんですね!
その発想はなかったです。

>もこな2さん
すみません、私の方法では書いているととんでもない量になるため(B列に入る種類が多い)、他に方法があるはずではないかと思い、質問させていただいた次第です。

お二方ありがとうございました。
(VBABAA) 2019/12/12(木) 17:01


 次回からは、まっとうなタイトルを書いてください。

(半平太) 2019/12/12(木) 17:48


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.