• ベストアンサー

Excel 条件を判別してオートナンバー

下記のようなシートがある場合   A  B   1 1 2 1 3 1 4 2 5 2 6 2 A列を判定してB列に以下のようにナンバーをふりたい。   A  B   1 1  1 2 1  2 3 1  3 4 2  1 5 2  2 6 2  3 関数、VBAどちらでもいいのでご教授願います。

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

  • ベストアンサー
  • mzon
  • ベストアンサー率48% (26/54)
回答No.4

皆さんの回答に少し足すことで可能です。 B1は先頭なのでAがあるか確認するだけなので、「=IF(A1="","",1)」とします。 B2以降は=IF(A3="","",IF(A3=A2,B2+1,1))となります。 VBAでコードを記述する場合は下記のように、コードを記述することで、式を埋め込めます。 (直接値を編集してもいいでしょうどね) ----ボタンをおした時に列50まで式を埋め込む例---- Private Sub CommandButton1_Click() Dim objRange As Range Set objRange = Me.Range("A1") Do Until objRange.Row > 50 If objRange.Row = 1 Then objRange.Offset(0, 1).Value = "=IF(A" & CStr(objRange.Row) & "="""","""",1)" Else objRange.Offset(0, 1).Value = "=IF(A" & CStr(objRange.Row) & "="""","""",IF(A" & CStr(objRange.Row) & "=A" & CStr(objRange.Row - 1) & ",B" & CStr(objRange.Row - 1) & "+1,1))" End If Set objRange = objRange.Offset(1, 0) Loop Set objRange = Nothing End Sub

miniminidog_001
質問者

お礼

大変参考になりました。 おかげさまで問題の解決ができました。 ありがとうございます。

その他の回答 (6)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.7

セルB1に1を入力して セルB2に=IF(A2=A1,B1+1,1) あとは数式をコピーすれば出来ると思います。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.6

関数というより数式? >A列はソートまで完了している段階です。 といいつつ >・A列に数値がない場合はB列に対してなにもしない というのはどうか?。 値が無くなったら最終行では?、 もしくは、途中に文字でもあるか?。 >・A列に数値が入ってる場合にB列にNoを入れたい >かつ >・A列が同じ数値の場合はB列はNoを1から順番に入れたい VBAでというからには多少の知識はあるとみたが、 この何がわからないのか、わからない。 カウントすることと前行との比較、他なんだろう?。 数式や関数でなくVBAでセル1つずつ判定を行ないたいのなら、 コントロールブレイクや順位付け、ソート、これらを学ぶ。 仕様=質問であるので、 省略しすぎないできちんと意図を伝えることも大事。 だからと言ってすべてを質問で教える必要はない、 要点だけのやりとり(=意図だけ)でもわかる人にはわかる。

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

質問の書き方が不完全。ないしは例が少なすぎるか、読者がどう取るか想像力の欠如。 A列の値(例えば1)がまた第3行より下で、あとで出現するのかどうか。 また途切れて後に、1の続きの塊が出てくるのか?出てきたとき振る番号は? ばらばらで出てくると、ソートしないと、VBAでも難しいのだ。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

NO2です。 >・A列に数値がない場合はB列に対してなにもしない  =IF(A1<>"",COUNTIF($A$1:A1,A1),"")

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 B1に=COUNTIF($A$1:A1,A1)を入力、下方向にコピーで如何でしょうか。

miniminidog_001
質問者

お礼

回答ありがとうございます。 A列が”1”なら1~順番にB列に数値が入るのですが A列が”2”になった場合、又1~順番にB列に数値が入るようにできますか? よろしくお願いします。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

A列のデータは昇順でソートされているみたいなので、 B1にとりあえず、「1」といれ、 B2以降には「=IF(A1=A2,B1+1,1)」という数式を入れ、下へコピーして下さい。

miniminidog_001
質問者

補足

早速の回答ありがとうございます。 A列はソートまで完了している段階です。 ・A列に数値が入ってる場合にB列にNoを入れたい かつ ・A列が同じ数値の場合はB列はNoを1から順番に入れたい ・A列に数値がない場合はB列に対してなにもしない このような条件で関数、VBAを考えています。 質問内容が漠然としていてすいません。

関連するQ&A