- ベストアンサー
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 ・ ・ ・ ・ ・ ・ 今は目で見ながら毎日、オートフィルタでがんばっています。 これができるとすごくうれしいです。 よろしくお願いいたします。
- goomod2
- お礼率66% (34/51)
- オフィス系ソフト
- 回答数3
- ありがとう数4
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
わざわざVBAでやらなくてもB1に下記の様な式を入れてコピーしてやればいいですよ。 =COUNTIF(A$1:A1,A1)
その他の回答 (2)
- ASIMOV
- ベストアンサー率41% (982/2351)
ご希望の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
お礼
さっそくの回答ありがとうございました。 ポイントは今回先着の方に差し上げますが、 本当は皆様に差し上げたいです。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17068)
(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で(例)山田を順次捕らえて連番を振って行く手もある。 ソート方に持ち込むのが簡単になって賢明。
お礼
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 名前 佐藤 伊東 加藤 田中 →以下つづく わかりにくいかもしれませんがよろしくお願いします。
- ベストアンサー
- Visual Basic
- 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の名前を入れていきたいのですが,田中,佐藤の分を抜いた上で番号の若い順に選んできたいのです。 どのような関数をどのように使えば成功するでしょうか。
- ベストアンサー
- その他MS Office製品
- エクセルのデータ並べ替え(抽出)の方法
エクセルのデータ並べ替え(抽出)の方法 を教えてください。 下記のようなデータがあるとします。 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は佐藤にする。 よろしくお願い申し上げます。
- ベストアンサー
- Excel(エクセル)
お礼
画像つきでわざわざありがとうございます! VBAでないとだめかな、と思いこんでいました。 助かりました、感謝感謝です。