アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のようなシートがある場合
  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どちらでもいいのでご教授願います。

A 回答 (7件)

A列のデータは昇順でソートされているみたいなので、



B1にとりあえず、「1」といれ、
B2以降には「=IF(A1=A2,B1+1,1)」という数式を入れ、下へコピーして下さい。

この回答への補足

早速の回答ありがとうございます。
A列はソートまで完了している段階です。

・A列に数値が入ってる場合にB列にNoを入れたい
かつ
・A列が同じ数値の場合はB列はNoを1から順番に入れたい
・A列に数値がない場合はB列に対してなにもしない

このような条件で関数、VBAを考えています。

質問内容が漠然としていてすいません。

補足日時:2011/02/10 16:59
    • good
    • 0

一例です。


B1に=COUNTIF($A$1:A1,A1)を入力、下方向にコピーで如何でしょうか。
    • good
    • 0
この回答へのお礼

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

よろしくお願いします。

お礼日時:2011/02/10 17:02

NO2です。


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

皆さんの回答に少し足すことで可能です。



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
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/13 15:23

質問の書き方が不完全。

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

関数というより数式?



>A列はソートまで完了している段階です。
といいつつ
>・A列に数値がない場合はB列に対してなにもしない
というのはどうか?。
値が無くなったら最終行では?、
もしくは、途中に文字でもあるか?。

>・A列に数値が入ってる場合にB列にNoを入れたい
>かつ
>・A列が同じ数値の場合はB列はNoを1から順番に入れたい

VBAでというからには多少の知識はあるとみたが、
この何がわからないのか、わからない。
カウントすることと前行との比較、他なんだろう?。

数式や関数でなくVBAでセル1つずつ判定を行ないたいのなら、
コントロールブレイクや順位付け、ソート、これらを学ぶ。

仕様=質問であるので、
省略しすぎないできちんと意図を伝えることも大事。
だからと言ってすべてを質問で教える必要はない、
要点だけのやりとり(=意図だけ)でもわかる人にはわかる。
    • good
    • 0

セルB1に1を入力して


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!