[[20060711211558]] 『複数シートのセルに連番を付けたいのですが』(yoshi) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数シートのセルに連番を付けたいのですが』(yoshi)

ブック1の中にシートが30枚位(ファイルごとに枚数が違う)あります。
30枚のシートの中にそれぞれ同じ形式の表があります。

シート1→”セルB3”から列方向に1.2.3・・・・

シート2→”セルB3”から列方向に1.2.3・・・・

    ・

    ・

    ・

  
シートn→”セルB3”から列方向に1.2.3・・・・

と、B3へ連番をシート全部を1括で振りたいのですが、何か良い方法はないでしょうか?

最初は、エクセルを「作業グループ」にして[編集]_[フィル]_[連続データの作成]で30枚くらいいっぺんに連番をふろうと思っていたのですが、
シート1→連番1〜10
シート2→連番1〜30
シート3→連番1〜5
と、連番をふる数が一定していないので、MAXで50くらいだから[編集]_[フィル]_[連続データの作成]の「停止値」の部分に30と入れてやっていたのですが、シート1とシート3はかなり余分に連番が振られてしまいます。
必要なセルだけに連番をふる方法は何かないでしょうか?

今日ずっと考えていたのですが、わかりませんでした。
ちなみになぜ余分に連番をふられると困るかというと、その次の処理として複数のシートを1枚のシートに統合するので余分に連番をふられると空白セルが間に入ってしまい、その余分な連番の部分を手作業で削除しなければならないのです。

拙い文章で申し訳ありません。
どうかご教授よろしくお願いいたします。


 単純に考えると
 シート2のB3に
 =シート1!B3+1
 シート3のB3に
 =シート2!B3+1
 以下、シートnまで同じ。ではダメですか。
 後はマクロですか。
 (DAI)

 >必要なセルだけに連番をふる方法は何かないでしょうか? 
要・不要の見分ける目安が提示されないと有効な回答は得られないと推測されます。
(みやほりん)(-_∂)b


 >連番をふる数が一定していないので
    そういうことであれば,いづれにしてもシート毎の連番最大値が
  あるということですので,何らかの方法で,その最大値だけはシートの
  数だけ手作業 入力する必要がありますね。
    その具体的数値が不明ですので,具体的な方法の回答が得られないのでは?
 考え方くらいしか提案できないでしょう。

  マクロであれば比較的簡単と思います。
たとえば,どこか特定のシート(例えば31枚目のシート)のどこか
の列(例えばA列)に
希望の連番最大値を一覧で記載しておき
各シート毎にその数値まで,数値(連番)を記載するという
コードになります。


シート名を手作業で抜き出さないといけませんが

作業用シートをつくって

	[A]	[B]	[C]
[1]		1	
[2]	Sheet1	6	1
[3]	Sheet2	5	7
[4]	Sheet3	4	12

  A列 シート名
  B1=1
  B2=COUNTA(INDIRECT(A2&"!3:3")) ←縦にフィルドラッグ
  C2=SUM($B$1:B1) ←縦にフィルドラッグ

連番を振りたいシート

	[A]	[B]	[C]
[1]	1		
[2]	1	2	3
[3]	A	B	C

 連番を付けたいシート(作業グループにして)
 上に作業用行を2行追加
 A1=VLOOKUP(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))),作業用シート!A:C,3)
 A2=A1
 B2=IF(B3="","",A2+1) ←横にフィルドラッグ

 とすると、3行目が空欄で無い条件で、作業用シートのA列に
 シート名を入力した順に連番が出てくる(2行目)ので値貼り付け。

 ・・・・で、できますかね?
 (後の作業で""がひっかかるようなら使えませんが)

 (HANA)


 ・・・もしかしてシート毎に連番ですか?
 作業グループにして
 B3=1
 B4=IF(空白セルになたら空欄を表示したい列のセル="","",B3+1) ←コピー
 (B2が空欄なら B4の式をB3にもフィルドラッグして下さい)
 で値張り付けすればいいのでは?(やっぱりコピーは多めに必要ですが)

 (HANA)
      ※訂正しました。(7/12 21:25)


ご返答ありがとうございました。
実は今回はVBAで作成しているんです・・・。
HANAさん、前回に引き続きお手数をかけてしまい本当にすいません。

以下の作業を同じブックの複数のシートで
同時操作したいのですが、ForEach〜NEXTをくっつけたり色々やってはみるんですが駄目でした。

Sub AutoFill_1()

Worksheets("Sheet1").Select

Range("B1").Value = 1

Range("B1").AutoFill Destination:=Range("B1:B7"), Type:=xlFillSeries

End Sub

どなたかご存知の方がいたらどうかどうか教えていただけないでしょうか?
(yoshi)


 みやほりんさんのコメントにもありますが、どこまで連番を振るのかの目印はないのですか?
 (ROUGE)

>みやほりんさんのコメントにもありますが、どこまで連番を振るのかの目印はないのですか?

C列の空欄があるところまでです。C列を参照して連番を振っていきたいのですが・・。

質問ありがとうございます。
どうかよろしくおねがいします。
(yoshi)


 単純なものですが・・・
(ROUGE)
'----
Sub yoshi()
    Dim i As Long, ws As Worksheet
    For Each ws In Worksheets
        With ws
            If .Range("C1").Value <> "" Then
                For i = 1 To .Range("C" & Rows.Count).End(xlUp).Row
                    .Range("B" & i).Value = i
                Next
            End If
        End With
    Next
End Sub

ありがとうございます。(涙)

あまりのすばらしさに感動してしまいました。。。。

本当にすごいですね。

「なんで残業してるんだよ。」って私の上司に見つめられ、
本屋では「もういい加減にしてください。」って感じで、
近くでたな卸しされてたり、コミックの袋詰めが始まったりという
4日間がとっても報われました。

rougeさん、HANAさん、みやほりんさん、DAIさん、本当に本当にありがとうございました。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.