• ベストアンサー

エクセルで、○について連番を自動で振るには?

エクセルで、○と入力したら、○の数の連番を振ることはできますか? エクセル初心者です。 _ A列 1 ○1 2 ○2 3 4 ○3 5 6 ○4 出来ればつけた連番は○より小さくなるとありがたいです。 B列ではなく、A列の○の右横に反映させたいです。 マクロなら可能でしょうか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

ご紹介したマクロは,主に3つの部分(3つの仕事)で出来ています。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  Dim h As Range  Dim o As String ’Wクリックされたセルが目的の範囲内なのかどうか調べる部分  if application.intersect(target, range("A1:A10")) is nothing then exit sub ’★ ’Wクリックされたセルに○を記入したり消去する部分  If Target = "" Then   Target = "○"  Else   Target.ClearContents  End If ’連番を振り直す部分  Set h = Range(Target, Range("A10")).Find(what:="○", LookIn:=xlFormulas, lookat:=xlPart) ’★  If Not h Is Nothing Then   o = h.Address   Do    h = "○" & Application.CountIf(Range("A1:A" & h.Row), "○*") ’★    h.Characters(2, 9).Font.Size = 9    Set h = Range(Target, Range("A10")).FindNext(after:=h) ’★   Loop Until h.Address = o  End If  Cancel = True End Sub ご覧になって判るようにA1からA10までの範囲で,という文言が各所(★を打った行)に出てきますから,そこを漏れなく直してください。

kokoro228
質問者

お礼

丁寧に説明してくださり、さらに 素晴らしい回答をどうもありがとうございました! これで作業スピードが10倍くらいになった気がします!! みんなも喜ぶと思います! 大変たすかりました!どうもありがとうございました!

その他の回答 (4)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

下記のようなマクロならできるが。 基本的なことだけで、エラー処理なんかはしてない。 SheetのWorkSheetモジュールに下記VBAを貼り付ける。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False c = 1 If Target.Column <> c Then Exit Sub ri = 1 re = Rows(ActiveSheet.Rows.Count).End(xlUp).Row i = 1 For r = ri To re If Left(Cells(r, c), 1) = "○" Then Cells(r, c) = "○" & i i = i + 1 Cells(r, c).Characters(Start:=2, Length:=Len(i)).Font.Size = 8 End If Next Application.EnableEvents = True End Sub

kokoro228
質問者

お礼

マクロを考えてくださりありがとうございます! なるほど!と思えるようにもう少し勉強したいと思います。 回答ありがとうございました!

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

できますかと言われれば,そりゃまぁ,やれば出来ます。 【手順】 シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim h As Range Dim o As String Dim n As Long  If Target.Column <> 1 Then Exit Sub  If Target = "" Then   Target = "○" & (1 + Application.CountIf(Range("A1:A" & Target.Row), "○*"))   Target.Characters(2, 9).Font.Size = 9  Else   Target.ClearContents  End If  Set h = Range(Target.Offset(1), Range("A65536")).Find(what:="○", LookIn:=xlFormulas,  lookat:=xlPart)  If Not h Is Nothing Then   o = h.Address   Do    h = "○" & Application.CountIf(Range("A1:A" & h.Row), "○*")    h.Characters(2, 9).Font.Size = 9    Set h = Range(Target.Offset(1), Range("A65536")).FindNext(after:=h)   Loop Until h.Address = o  End If  Cancel = True End Sub ファイルメニューから終了してエクセルに戻り,A列のセルでWクリックする。 でもまぁこんなマクロをただ作ってもらって,最初は物珍しくておもしろいかも?しれませんが,実際の仕事の場面で活用できるモノなのかはとても疑問に思われます。 【推奨】 素直にB列に B2: =IF(A2="○",COUNTIF($A$1:A2,A2),"") 以下コピー などのような数式を並べて連番を計算させるなどしてご利用いただく事を考えた方が,何をやっているのかどうすればイイノカもご自分できちんと理解できて,実際の仕事は進むと思いますよ。

kokoro228
質問者

補足

たしかに!初心者の自分ではまったくわかりません! しかし流石!といいますか、完璧です。頭が上がりません。 クリックして○をつける機能までご用意してくださるとは!なんという優しさ! クリック機能くらいは自分で何とかしようと思っていたところでしたので 大変驚きました!ありがとうございます。たすかりました。 ちなみに推奨のほうも参考にさせていただきました。 なるほど、かんたんでしたね。。 この表は、「商品購入申し込み」の手書きの表を打ち込む際に使用しています。 とても素晴らしい案だと思いましたので、もうひとつ。 B列やC列、さらにはにどんな列にも反映させることはできますか? 逆に範囲を絞ることもできますでしょうか? また、A列の1~10まで、と、範囲を指定することは可能でしょうか?

回答No.2

○1 と入力したセルをアクティブにすると右下に小さい■がでるからそれをドラッグすれば可能です

kokoro228
質問者

お礼

回答ありがとうございます! 地声のほうが気になってしまうわたしw 素敵ですね!

  • muchon
  • ベストアンサー率26% (18/69)
回答No.1

簡単な方法でしたら関数でCOUNTを使うと、シートにある数をカウントしてくれますそれを上から下に反映させて使えばいけますね

kokoro228
質問者

お礼

そうですね、その方法もありますね! 回答ありがとうございます^^

関連するQ&A

専門家に質問してみよう