- ベストアンサー
エクセルで連番を振る方法
- エクセル初心者の方向けに、エクセルで連番を振る方法を解説します。
- エクセルの作業方向について、下から上、右から左で連番を振りたい場合の方法をご紹介します。
- 自動連番マクロを使用して、選択範囲に連番を振る方法を解説します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 とりあえず、マクロ書いてみました。 使い方はわかるのでしょうか。 何かあれば、補足にでも書いてくださればレスします。 Sub Re8062898() Dim mtxVtcl() Dim arrHrzn() Dim tnRow As Long Dim tnCol As Long Dim i As Long If TypeName(Selection) <> "Range" Then Exit Sub With Selection tnRow = .Rows.Count - 2 tnCol = .Columns.Count - 2 If tnRow < 1 And tnCol < 1 Then MsgBox "message": Exit Sub If tnRow > 0 Then ReDim mtxVtcl(1 To tnRow, 1 To 1) For i = 1 To tnRow mtxVtcl(i, 1) = tnRow - i + 1 Next i .Cells(2, 1).Resize(tnRow).Value = mtxVtcl .Cells(2, tnCol + 2).Resize(tnRow).Value = mtxVtcl End If If tnCol > 0 Then ReDim arrHrzn(1 To tnCol) For i = 1 To tnCol arrHrzn(i) = tnCol - i + 1 Next i .Cells(1, 2).Resize(, tnCol).Value = arrHrzn .Cells(tnRow + 2, 2).Resize(, tnCol).Value = arrHrzn End If End With End Sub
その他の回答 (4)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! すでに色々回答が出ていますので、参考程度で・・・ Sub 逆連番() Dim i As Long, j As Long, cnt As Long, endRow As Long, endCol As Long endRow = Selection(Selection.Count).Row endCol = Selection(Selection.Count).Column cnt = 0 For i = Selection(Selection.Count).Row To Selection(1).Row Step -1 cnt = cnt + 1 Cells(i, endCol + 1) = cnt Next i cnt = 0 For j = Selection(Selection.Count).Column To Selection(1).Column Step -1 cnt = cnt + 1 Cells(endRow + 1, j) = cnt Next j If Selection(1).Column <> 1 Then Range(Cells(Selection(1).Row, endCol + 1), Cells(endRow, endCol + 1)).Copy Selection(1).Offset(, -1) End If If Selection(1).Row <> 1 Then Range(Cells(endRow + 1, Selection(1).Column), Cells(endRow + 1, endCol)).Copy Selection(1).Offset(-1) End If End Sub こんな感じではどうでしょうか?m(_ _)m
お礼
有難うございました。 選択したセルの範囲に、下から右方向に連番が振られていきました。 他の用途に活用させていただきます。 tom04様 有難うございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
次のようなマクロでどうでしょう。 シート見出しを右クリックして「コードの表示」を選んで表示の画面に次のコードを入力します。 Sub 連番表示() Dim gRange As Range Dim n1, n2, m1, m2, i As Integer Dim iRow, iColumn As Integer Set gRange = Application.InputBox(Prompt:="作成する表の範囲を選択してください", Type:=8) n1 = gRange.Row n2 = gRange.Rows.Count + n1 - 1 m1 = gRange.Column m2 = gRange.Columns.Count + m1 - 1 i = 0 For iRow = n2 - 1 To n1 + 1 Step -1 i = i + 1 Cells(iRow, m1) = i Cells(iRow, m2) = i Next i = 0 For iColumn = m2 - 1 To m1 + 1 Step -1 i = i + 1 Cells(n1, iColumn) = i Cells(n2, iColumn) = i Next End Sub マクロの実行は「開発」タブの「マクロ」から「連番表示」を選択して「実行」をクリックします。
お礼
有難うございました。 InputBoxと、思ったとおりの連番が順番に入力されて行くのを見ることができて、面倒だと思っていた入力作業が楽しめます。 エクセルでこういう事をしたいと思っても、身近に回答をしてくれる人を見つけることも出来ませんし、 探すことすら不可能ですので、このような質問のサイトがあって嬉しいです。 有難うございました。活用させていただきます。 本当に感謝です。KURUMITO様、ありがとうございました。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
'イガイと簡単かも?、でも、繰り返すと。。。 Option Explicit Sub ReversalRulesSurround() Dim xEdge_Right As Long Dim xEdge_Low As Long Dim kk As Long Dim nn As Long Application.ScreenUpdating = False Application.DisplayAlerts = False xEdge_Right = ActiveSheet.UsedRange.Columns.Count xEdge_Low = ActiveSheet.UsedRange.Rows.Count For nn = 1 To xEdge_Low Cells(nn, xEdge_Right + 1) = xEdge_Low - nn + 1 Next nn For kk = 1 To xEdge_Right Cells(xEdge_Low + 1, kk) = xEdge_Right - kk + 1 Next kk With Columns(xEdge_Right + 1).Font .Bold = True .Italic = True End With With Rows(xEdge_Low + 1).Font .Bold = True .Italic = True End With Columns(xEdge_Right + 1).AutoFit Application.CutCopyMode = False Columns(xEdge_Right + 1).Copy Columns(1).Insert Application.CutCopyMode = False Rows(xEdge_Low + 1).Copy Rows(1).Insert Columns(xEdge_Right + 2).Font.ColorIndex = 3 Rows(xEdge_Low + 2).Font.ColorIndex = 3 Columns(1).Font.ColorIndex = 1 Rows(1).Font.ColorIndex = 1 Range(Cells(2, "B"), Cells(xEdge_Low + 1, xEdge_Right + 1)).Select Application.CutCopyMode = True Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
お礼
有難うございました。 連番がA列とA1から行方向に入力されるのですね。 選択する範囲をマクロに添って、フォントのスタイルなど参考にして、活用させていただきます。 JazzCorp様本当に有難うございました。
お礼
完璧です。思ったとおりの事が一瞬で魔法のように実現しました。 個人用のマクロブックの標準モジュールにコピーをして貼り付けました。 すべてのブックで利用できます。 このようなサイトがあって、感激しています。 本当に有難うございました。 ci mover様、及び回答を下さった皆様、ありがとうございました。感謝!感謝!です。