• ベストアンサー

excelVBA 項目ごとに連番をふりたい

よろしくお願いします。 excelで連番を振りたいのですが、隣のセルに並んでいる 項目ごとに振りたいのです。VBAでできるでしょうか? 番号を振りたいのはB列で、名前ごとに1から順番に番号を 振りたいです。名前が変わるとまた1に戻って、振っていき、 A列がなくなると終了です。 A列の名前の数や、それぞれのデータ数、 全体のデータ数などは、ばらばらです。 もしかしたら列数はかわるかも知れませんが、 隣の列の項目ごとに番号を1から振る、ということは 変わりません。 (A列) (B列)  山田    1  山田    2  山田    3  田中    1  田中    2  田中    3  田中    4  佐藤    1  佐藤    2  加藤    1  斎藤    1  斎藤    2  斎藤    3  斎藤    4  斎藤    5   ・    ・   ・    ・   ・    ・ 今は目で見ながら毎日、オートフィルタでがんばっています。 これができるとすごくうれしいです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

わざわざVBAでやらなくてもB1に下記の様な式を入れてコピーしてやればいいですよ。 =COUNTIF(A$1:A1,A1)

goomod2
質問者

お礼

画像つきでわざわざありがとうございます! VBAでないとだめかな、と思いこんでいました。 助かりました、感謝感謝です。

その他の回答 (2)

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.3

ご希望のVBAです --------------- Sub Mc1()  Nb = 1  Cells(1, 2) = Nb  ex = Range("A" & Rows.Count).End(xlUp).Row  For i = 2 To ex   If Cells(i, "A") = Cells(i - 1, "A") Then    Nb = Nb + 1   Else    Nb = 1   End If   Cells(i, "B") = Nb  Next End Sub

goomod2
質問者

お礼

さっそくの回答ありがとうございました。 ポイントは今回先着の方に差し上げますが、 本当は皆様に差し上げたいです。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

(1)VBAでなくてもエクセル関数COUNTIFでできる。 VBAでやる事情があるのか。 (2)(1)の関数をVBA化することも可能。 Sub test01() d = Range("A65536").End(xlUp).Row For i = 1 To d c = WorksheetFunction.CountIf(Range("A1:A" & i), Cells(i, "A")) Cells(i, "B") = c MsgBox c Next i End Sub 例データ 堺 1 境 1 サカイ 1 堺 2 境 2 境 3 ーーー (3)名前列でソートして、直前の名前を、毎行において、見て   A。同じなら前の番号(変数に保持する手もある。前行のB列セル)に+1   B変わったら1を 振れば仕舞いではないか。 (4)ソートしないなら、Find,FindNextで(例)山田を順次捕らえて連番を振って行く手もある。 ソート方に持ち込むのが簡単になって賢明。

goomod2
質問者

お礼

countifでできるんですね、おっしゃいますように VBAでやらなければならないということはありません。 でもVBAも勉強中なので、コードは非常に参考になります。 ありがとうございました。

関連するQ&A

  • エクセルフォームを使ってのデータ集約化について悩んでます。

    エクセルを使った手当申請用の所定フォームが下記の通りあります。 部門別に申請が上がってきます。 【A部門】 従業員番号・氏名・金額 0001  佐藤A夫 6,000   【B部門】 従業員番号・氏名・金額 0005  斎藤B夫 3,000 0008  加藤B作 4,000 1.まず、A部門・B部門それぞれの申請フォームをひとつにまとめるマクロを作成したい。 【統一】 従業員番号・氏名・金額 0001  佐藤A夫 6,000 0005  斎藤B夫 3,000 0008  加藤B作 4,000 2.その上で、項目及び、データ未入力の行及ぶ列を削除するマクロを作成したい。   (項目を削除) 0001  佐藤A夫 6,000 (この列より右を削除) 0005  斎藤B夫 3,000 0008  加藤B作 4,000 (この行より下を削除) 特に悩んでいる箇所は以下です。 (1)まとめる際に、重複や欠落が無く一本にする方法はありますか? (2)データが未入力となる行や列は変動する為、当該行や列を的確に選択する必要があります。 表現が不足している箇所もあると思いますが、有効な方法をご教示頂ければ幸いです。宜しくお願い申し上げます。

  • ExcelVBA 2列ずつ取り出し1列に

    お世話になります。 Excelで、あるデータを整理せねばならないのですが、 A列にID番号、B列に人名、 C列にID番号、D列に人名、というようなデータがあり このような状態です。 0001 山田花子      0002 田中太郎 これをA列に縦1列、つまりこのような状態にしたいのです。 0001  山田花子 0002 田中太郎 量が多くて、手で処理できないので、VBAでやりたいのですが、 この場合どのようなコードになるでしょうか。 教えていただければ幸いです。

  • 他のシートのセルの値を引用したい

    EXCEL2007でマクロ作成中の初心者です。今困っています。お助けください。 シートのA列に名前が書いてあります。 その名前の横B列に番号を入れたいのです。      A       B     1 佐藤   2 伊東   3 加藤   4 以下つづく 横B列の番号は他のシートにあります。現状では以下の番号になります。     A          B     1 佐藤        1   2 伊東        3   3 加藤        5   4 以下つづく 他のシートに以下の表があります。これは可変の表で、名前は次の列は空白です。 名前のあるセルのみ上の番号を表示したいです。 、       A    B    C    D    E     F   G  →以下つづく    1     2 番号    1     2    3     4    5    6   7   →以下つづく    3 名前   佐藤        伊東       加藤      田中  →以下つづく わかりにくいかもしれませんがよろしくお願いします。

  • シートの合計

    よろしくお願いします。 エクセルでシート1~3迄あります。各シ-トのA列は名前、B列に数字が入っています。名前はA列のどの行にあるかわかりません。 同じ名前をシート4のA1に入力したらその名前の合計を出したい。  シート1    シート2   シート3       シート4   A   B    A   B   A    B     A    B 山田 10   木村  5  佐々木 18   木村  55  鈴木 20   田中 21  伊藤  33    ↑ 木村 50   山下 70  加藤  57  (入力する) 田中 15   高橋 90  佐藤  61 高橋 60   山田 10  鈴木  12             ・   ・   ・          

  • Excelでのセルの検索

    セルの検索方法について、質問します。 現在の表       A    B      C     D --+-------+-------+-------+-------+------+-------+------- 1   鈴木   加藤   斎藤    --+-------+-------+-------+-------+------+-------+------- 2   佐藤   清水         --+-------+-------+-------+-------+------+-------+------- --+-------+-------+-------+-------+------+-------+------- 3   山田              --+-------+-------+-------+-------+------+-------+------- 理想形       A    B      C     D --+-------+-------+-------+-------+------+-------+------- 1   鈴木   加藤   斎藤   斎藤 --+-------+-------+-------+-------+------+-------+------- 2   佐藤   清水         清水 --+-------+-------+-------+-------+------+-------+------- --+-------+-------+-------+-------+------+-------+------- 3   山田              山田 --+-------+-------+-------+-------+------+-------+------- 上記のような表(現在の表)で、D列に空白セル以外の一番右のセルを探して表示できるような関数を探しているのですが?。 仕事で進捗表の作成を行っており、困っていますのでよろしくお願い致します。

  • エクセルで2つの条件を元に

    エクセル2007で名簿を作っています。 1ヶ月ごとにメンバーの順が変わります。 シート1(番号順に名簿を作りました)   A  B   C  1 1     山田 2 2     木村 3 3 副長 佐藤 4 4     鈴木 5 5 班長 田中 6 6     長田  シート2(こちらがメンバーに配る名簿です)   A   B  C   D 1 班長    1    3 2 田中    山田  鈴木 3 4 副長    2    4 5 佐藤    木村  長田 A2に田中,A5に佐藤を選んでくるのはvlookupで成功しました。 質問したいのは C列D列に上記の番号のようにシート1の名前を入れていきたいのですが,田中,佐藤の分を抜いた上で番号の若い順に選んできたいのです。 どのような関数をどのように使えば成功するでしょうか。  

  • エクセルのデータ並べ替え(抽出)の方法

    エクセルのデータ並べ替え(抽出)の方法 を教えてください。 下記のようなデータがあるとします。   A    B    C   D 1 田中  東京  千葉  福岡 2 山田  京都  滋賀 3 佐藤  奈良  青森  USA 4 鈴木  カナダ 愛媛 A列は名前、B列以降は文字列です。B列以降はC列までの行、D列までの行とさまざまです。重複セルはありません。 これを下記のように並べ替えたいです。   A    B    C   D 1東京  田中 2千葉  田中 3福岡  田中 4京都  山田 5滋賀  山田 6奈良  佐藤 7青森  佐藤 8USA   佐藤 9カナダ 鈴木 10愛媛  鈴木 こういうことは可能でしょうか??? 教えてください。 よろしくお願いします。

  • エクセルで、2つの列を比較して判定する方法。。。

    宜しくお願いします。 2つの列を比較して、判定結果を表示させる方法はないでしょうか? 例えば A         B 田中      加藤 佐藤      志村 吉田      吉田  のような列があった場合、 A列の文字がB列にもあった場合は1 A列の文字がB列になかった場合は0 をかえす式は作れないでしょうか? A         B     C 吉田      加藤     1(”吉田”はB列にあるので1)  佐藤      志村     0(佐藤はB列にないので0) 田中      吉田     0(田中はB列にないので0) やり方を教えてください。 宜しくお願いします。

  • エクセル関数(SUMIF???)

    同じ列で、条件を二つ指定して、合計を出す方法を教えてください。    A    B       山田    100   加藤    200   山田    300   佐藤    100   加藤    200 上の例だと、A列の「山田」と「佐藤」の合計を出す。という式です。 宜しく尾根がします。

  • セルの項目をシート名にしたい

    はじめまして、vba初心者の者です。 セルB3から始まるB列にある、 項目を各シートの名前にしたいです。 セルB列のセルの中身がnullになれば終了という動作。 例えば。 セルB3に「山田」という文字列があれば、Sheet1は山田にする。 セルB4に「佐藤」という文字列があれば、Sheet2は佐藤にする。 よろしくお願い申し上げます。

専門家に質問してみよう