No.6ベストアンサー
- 回答日時:
No5です。
以下のようにしてください。Public Sub 連番作成2()
Dim ws As Worksheet
Dim i As Long
Dim no As Long
Dim no2 As Long
Dim lrow As Long
Dim maxrow As Long
If MsgBox("連番を作成します", vbOKCancel) <> vbOK Then
Exit Sub
End If
no = 1
no2 = 1
For i = 1 To Worksheets.Count
Set ws = Worksheets(i)
maxrow = ws.Cells(Rows.Count, "A").End(xlUp).Row
For lrow = 2 To maxrow
If ws.Cells(lrow, "A").Value = 21 Then
no = 1
End If
If ws.Cells(lrow, "B").Value <> "" Then
ws.Cells(lrow, "C").Value = no
no = no + 1
End If
Next
maxrow = ws.Cells(Rows.Count, "L").End(xlUp).Row
For lrow = 12 To maxrow
If ws.Cells(lrow, "L").Value = 21 Then
no2 = 1
End If
If ws.Cells(lrow, "M").Value <> "" Then
ws.Cells(lrow, "N").Value = no2
no2 = no2 + 1
End If
Next
Next
MsgBox ("完了")
End Sub
ありがとうございます。
希望とおりの結果を得ることができそうです。
何度も手直しをして頂き、申し訳ございませんでした。
助かりました。感謝いたします。
No.7
- 回答日時:
こんばんは。
>行:12以降にデータ、列:L(No.),M(データ),N(連番)
ということは、データは13行目から?
Sheet1 の最初から、N13には、
=IF(M13<>"",COUNTA(OFFSET(M13,,,-MOD(L13,21)-1)),"")
L列の数字がある限りを、フィルコピーしてやります。
Sheet2 からは、N13から
=IF(M13<>"",COUNTA(OFFSET(M13,,,-MOD(L13,21)-1))+(L12<21)*$Q$1,"")
とおいて、M列の数字がある限りを、フィルコピーしてやります。
もし、裏技を使うならば、
Sheet2 ~Sheet20 まで、Contrl キーを押したまま、選択して、
L13~L42(または、L列の数字のある限り) をドラッグして選択します。
ファンクションキーの[F2]を押し、Ctrl キーを押して、Enterを入れると、同じ場所に選択したシート文、数式が全部入ります。
そうすれば、全部同じ数式が入力できます。
Sheet2 のセルのQ1 には、(この場所は任意です)
=INDEX(Sheet1!N:N,MATCH(10^10,Sheet1!N:N,1)
といれてやり、同じく、作業グループ状態のままで、[F2]を押して、Ctrlキーを押して、Enter を入れると、同じ数式が入ってしまいます。しかし、今回は、前のシートを受け継ぐ目的ですから、
Sheet3 の場合は、Sheet2 に、Sheet4の場合は、Sheet3 に変えて挙げます。
*シートそれぞれの数式を書き換えるのが面倒かとは思いますが、一気に入れるなら、マクロの処理になります。
例えば、Sheet3 -Q1
=INDEX(Sheet2!N:N,MATCH(10^10,Sheet2!N:N,1))
最後に、シートタブ-右クリックで作業グループの解除
これで出来上がりました。
No.5
- 回答日時:
>また今後、使用している表において項目等が追加されることが予想され、
>下記のような行/列になると思われます。
>その場合、頂いたマクロの構文はどのように変更されるのでしょうか?
>引き続きで、大変申し訳ございませんが、再度のご教授をお願い申し上げます。
>各々の表は、
>行:12以降にデータ、列:L(No.),M(データ),N(連番)
その場合、連番はC列の続きの連番をN列に振るのでしょうか。
それともN列の連番はC列の連番とは独立して振るのでしょうか。
ご回答ありがとうございます。
今後については、「N列の連番はC列の連番とは独立して振る」こととなると思います。
お手数をお掛け致しまして申し訳ございませんが、何卒よろしくお願い申し上げます。
No.4
- 回答日時:
こんばんは!
横からお邪魔します。
各シートL・M列の12行目以降にデータがあり、結果をN列に表示すれば良いのですね。
尚、各シートの連番が20できっちり割り切れない場合は
次のシートの20番目まで連番を引き継ぐ!という解釈です。
(仮にSheet1の連番が50番で終わっていて、41番~50番目に1~3の連番がある場合は
次のシートの20番目までは「4」からその連番が続く!)
標準モジュールです。
Sub Sample1()
Dim i As Long, k As Long, cnt As Long
Application.ScreenUpdating = False
For k = 1 To Worksheets.Count
With Worksheets(k)
For i = 12 To .Cells(Rows.Count, "L").End(xlUp).Row '//L列の12行目~最終行まで//
If .Cells(i, "M") <> "" Then
cnt = cnt + 1
.Cells(i, "N") = cnt
Else
.Cells(i, "N") = ""
End If
If .Cells(i, "L") Mod 20 = 0 Then
cnt = 0
End If
Next i
End With
Next k
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
こんな感じではどうでしょうか?m(_ _)m
No.3
- 回答日時:
No2です。
一か所訂正です。
If ws.Cells(lrow, "A").Value = 20 Then
を
If ws.Cells(lrow, "A").Value = 21 Then
にして下さい。
失礼しました。
早々のご回答ありがとうございます。
思ったとおりの結果が表示され、大変助かりました。
また今後、使用している表において項目等が追加されることが予想され、
下記のような行/列になると思われます。
その場合、頂いたマクロの構文はどのように変更されるのでしょうか?
引き続きで、大変申し訳ございませんが、再度のご教授をお願い申し上げます。
各々の表は、
行:12以降にデータ、列:L(No.),M(データ),N(連番)
No.2
- 回答日時:
以下のマクロを標準モジュールに登録してください。
A列に20の数値が必ずあることが前提です。
-----------------------------------------------
Option Explicit
Public Sub 連番作成()
Dim ws As Worksheet
Dim i As Long
Dim no As Long
Dim lrow As Long
Dim maxrow As Long
If MsgBox("連番を作成します", vbOKCancel) <> vbOK Then
Exit Sub
End If
no = 1
For i = 1 To Worksheets.Count
Set ws = Worksheets(i)
maxrow = ws.Cells(Rows.Count, 1).End(xlUp).Row
For lrow = 2 To maxrow
If ws.Cells(lrow, "A").Value = 20 Then
no = 1
End If
If ws.Cells(lrow, "B").Value <> "" Then
ws.Cells(lrow, "C").Value = no
no = no + 1
End If
Next
Next
MsgBox ("完了")
End Sub
No.1
- 回答日時:
マクロでなら可能かと思いますが、マクロ前提での補足要求です。
マクロ不可の場合は、補足不要です。
①連番が、赤線のところで1に戻りますが、どのような基準で1に戻るのでしょうか。
②連番は次のシートにも継続するように見えますが、それであってますか。
③全シートが連番割り振りの対象になりますがそれでよいですか。(連番を割り振りたくない特別なシートはないですか)
④連番は1番左側のシートから順に右側のシートへ割り振りますが、それでよいですか。
ご回答ありがとうございます。
➀&②各シートA列のNo.20で締め、No.21より1に戻ります。それが次シートに繰りかえされます。
③連番を割り振りたくない特別なシートは、今のところありません。
④1番左側のシートから順に右側のシートへ割り振ることで問題ありません。シートは新しく左側に追加される予定です。
何卒よろしくお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
今まで文字化けなく開けていたc...
-
スプレッドシートで指定された...
-
ExcelでASCを使って全角を半角...
-
マクロの処理が遅くなった
-
Excel関数について教えてくださ...
-
作成した数式を値として表示し...
-
エクセルの質問です。 F列からL...
-
エクセルでファイルの最終更新...
-
EXCELの散布図で日付が1900年に...
-
【マクロ】VLOOKUPにて参照元に...
-
エクセルのセル内に分数などの...
-
Excelの警告について
-
Microsoft 365Excelの見開きペ...
-
Excel関数について教えてくださ...
-
シートの情報を別のシートへま...
-
Excelマクロで空白セルを詰めて...
-
【マクロ】フォルダ内にあるPDF...
-
index関数の説明をお願いします。
-
重複しない値を取り出したい
-
エクセルの数式バーのフォント...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセルの数式バーのフォント...
-
エクセルで数字の組み合わせを...
-
エクセルを使用して、円周率を...
-
Excelで特定の文字列が含まれて...
-
Excel 対象のセルに入力が無い...
-
任意の値が存在する行に名前を...
-
エクセルでファイルの最終更新...
-
index関数の説明をお願いします。
-
条件付き書式でやりたいのですが
-
重複しない値を取り出したい
-
【ExcelVBA】UTF-8(BOM無)でC...
-
【マクロ】マクロが割当てされ...
-
エクセル IF計算式?でしょうか?
-
エクセルで曜日を入れたい
-
表中の指定した条件の文字列を...
-
【Excel】版が同じ事を示す番号...
-
EXCELの散布図で日付が1900年に...
-
Excelについて。Excelに縦1列に...
おすすめ情報