
Microsoft Excel 2003での質問です。
表を作成しました。
結合セルが複数ある1列に(セル数はまちまち・複数の列には非結合)、連番を振っていく作業をしています。
これをVBAを使って自動化したいのです。
列に連番がすでに入力されている最終行の下のセル(つまりこれから連番が入る空白セル)を選択、
範囲指定し(セル数はまちまちなのでこれは手作業)、
セルを結合させるまではできたのですが、
この結合させたセルに、[(一つ上の結合セル)+(1)]の値を入力させるにはどうプログラムしたらよいでしょうか?
わかりにくい説明で恐縮ですが、どなたかご教示ください。
No.4ベストアンサー
- 回答日時:
こんな感じで如何でしょうか。
このマクロを実行すると、範囲を聞いていますので、新しく継続番号を付与する
範囲を選択して、[OK]します。指定範囲の1つ上が数字の場合は、その番号に
続く番号を付与し、数字で無い場合は、1から付与します。
複数列を含む範囲を指定した場合は、最左列だけが有効です。
Sub 結合対応連続番号付与()
Dim Num As Long
Dim Hani
On Error Resume Next
Set Hani = Application.InputBox(vbLf & " ※ 連番付与範囲を選択して" & _
"[OK]を押してください。" & vbLf & vbLf & _
" 上のセルから連続番号を付与します。(結合対応)", _
Type:=8).Resize(, 1)
If Err.Number > 0 Then Exit Sub
Hani.Resize(1).Select
If Selection.Row = 1 Then
Num = 1
Else
Selection.Offset(-1).Select
If IsNumeric(ActiveCell.Value) Then
Num = ActiveCell.Value + 1
Else
Num = 1
End If
End If
Hani.Resize(1).Select
Do Until Intersect(Selection, Hani) Is Nothing
ActiveCell.Value = Num
Num = Num + 1
Selection.Offset(1).Select
Loop
End Sub
ja7awu様
ご丁寧なご回答、ありがとうございます。
さっそく実行してみましたところ、
実にわかりやすくスムースに連番を振ることができました。
工夫次第でいろいろと応用できそうなプログラムでした。
ソースを見ても、私には分からないコマンドがたくさん出てきますが、
参考にさせていただき、勉強したいと思います。
助かりました。ありがとうございました。
No.3
- 回答日時:
仮にA1:A13の例
Sub test01()
Dim cl As Range
n = 1
m = "n" '上セルはマージなし
For Each cl In Range("a1:a13")
If cl.MergeCells = True Then
If m = "y" Then
Else
cl = n
n = n + 1
End If
m = "y"
Else
m = "n"
cl = n
n = n + 1
End If
Next
End Sub
imogasi様
ご回答ありがとうございます。
記述していただいたプログラム、実行してみたのですが、私の未熟さ、無知ゆえに、ちょっと思うとおりに動いてくれませんでした。
せっかくご親切にご回答いただいたにもかかわらず、誠にふがいないお礼になってしまいますが、少し基礎を勉強し、imogasi様に教えていただいたプログラムを動かしてみようと思います。
本来であれば感激の謝辞を述べるべきですが、現在の私の腕で試行錯誤しているとお礼が遅れてしまうおそれがありますので、とりいそぎ、お礼申し上げます。
imogasi様のご厚意に添えることができず、誠に心苦しく存じます。申し訳ありません。
ありがとうございました。
No.2
- 回答日時:
Sub test()
Dim m, n, a As Integer
Dim str As String
n = ActiveCell.Row
a = ActiveCell
For m = n + 1 To n + 10
Range("A" & m).Select
If ActiveCell = "" Then
a = a + 1
ActiveCell = a
End If
Next m
End Sub
'現在の選択しているところのセルの位置と値を読み込み
'その下のセルに、1加算した値を書き込む
'書き込む条件として、空白セルであること
'どこまで、連番にすればよいかわからないので
'適当
primary5869様
早速のご回答、ありがとうございます!
ご教示の通り入力したところ、希望通りの操作ができました。感謝いたします。
一つ上のセルに足したい数値は1だったので、
For文行の最後の10を1に調整し、実行してみました。
ありがとうございました。
No.1
- 回答日時:
Sub test()
Dim m, n, a As Integer
Dim str As String
For m = 1 To 20
Range("A" & m).Select
If ActiveCell = "" Then
a = a + 1
ActiveCell = a
End If
Next m
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Excel(エクセル) 【エクセル】文中に別シートのセルの内容を自動入力したい 6 2022/11/17 11:30
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) 【Excel】hyperlink関数を解除してもハイパーリンクが活きるようにできますか? 3 2023/05/22 11:22
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
(Excel)数字記入セルの数値の後...
-
セルをクリック⇒そのセルに入力...
-
エクセルで指定したセルのどれ...
-
エクセルのセルの枠を超えて文...
-
エクセル セルの中に縦線が入っ...
-
枠に収まらない文字を非表示に...
-
Excelで数式内の文字色を一部だ...
-
対象セル内(複数)が埋まった...
-
Excelで教えてください。 バー...
-
Excelで住所を2つ(町名迄と番...
-
エクセル オートフィルタで絞...
-
【エクセル】IF関数 Aまたは...
-
エクセルの書式設定の表示形式...
-
excelの特定のセルの隣のセル指...
-
Excel2003 の『コメント』の編...
-
Excel 例A(1+9) のように番地の...
-
数式を残したまま、別のセルに...
-
EXCEL VBA セルに既に入...
-
エクセルの一つのセルに複数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルの書式設定の表示形式...
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
おすすめ情報