[[20070428141212]] 『ナンバリング』(たいが) ページの最後に飛ぶ

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

 

『ナンバリング』(たいが)
 仮にB1に「4」を入力したら
 A列にナンバーが
 1
 2
 3
 4
 1
 2
 3
 4
 1
 2
 ・
 ・
 ・と4までの繰り返し。
 もし「6」と入力したら
 1
 2 
 3
 4
 5
 6
 1
 2
 3
 4
 5
 6
 という具合に6までの繰り返しになるようにしたいのですが、
 どのように数式を考えたらよいでしょうか。
 よろしくお願いします。


 A1=MOD(ROW()-1,$B$1)+1

 By しげちゃん

 しげちゃん(さん)ありがとうございます。

 数式を入れてみましたが,

 4を入れたときは上から2,3,1,2,3,1,2,3・・・

 5を入れたときは最初の4行が2,3,4,5,1,2,3,4,5,・・・

 となってしまい,1からスタートしません。

 何とかなりますか。


 しげちゃん(さん)解決しました。

 A1=MOD(ROW()-2,$B$1)+1

 にすればいいのですね。
 (たいが)


 =Mod(Rows($1:1)-1,$B$1)+1
 とかにすれば、どこからでも 1 から...
 (seiya)

 seiyaさん,しげちゃん(さん)ありがとうございます。
 ちょっと問題が発生しました。

 V2に最初の数式を入れておき,それをA1にコピーし,
 セル右下の+をダブルクリックすると行末までコピーされるような
 マクロをファイル操作しながら記録し,フォームボタンに貼り付けています。

 *******************
 Sub group3()
 '
 ' group3 Macro
 '

 '
    Range("V2").Select
    Selection.Copy Destination:=Range("A2")
    Range("A2").Select
    Selection.AutoFill Destination:=Range("A2:A148")
    Range("A2:A200").Select
    Range("A14").Select
 End Sub
 **********************

 しかし,このときにはB列に148行目までデータが入っていたのですが,
 データ数は可変で,100の時も200の時もあります。

 できればB列にある最後のデータで止めたいのですが,
 これだと,常に1480行まで書き込んでしまいます。

 たとえばB列に100行までデータが入っている場合はA100まで番号を振り,
 200行までの場合はA200までコピーされるようなことはできないでしょうか。

 よろしくお願いします。
 (たいが)

 えっ?
 >できればB列にある最後のデータで....
 >これだと, 常に1480行まで書き込んでしまいます。

 ここのところがいまいち不明ですが?
 例えば
 Dim LastR As Long
 LastR = Columns("b").Find("*",Cells(Rows.Count,"b"),xlValues,,,xlPrevious).Row
 With Range("a2")
      Range("v2").Copy .Cells
      .AutoFill .Resize(LastR -1)
 End With
 とか?
 (seiya)

これだと,常に1480行まで書き込んでしまいます。→148行でした。

 マクロを記録しながら行った操作は

 V2に書いてある =MOD(ROW()-2,$B$1)+1
 をA2にコピーし,
 A2のセルの右下(黒い四角)にカーソルを置き,+をだして,
 ダブルクリック。

です。わかりますか。


 教えていただいたマクロを少し加工して
 ランダムにデータを並べ替えることと
 通し番号をつけることに挑戦してみました。
 エクセル2007では動くのですが,
 エクセル2000では動きません。

 どこが対応していないのか,教えていただけますか。
 (たいが)

Sub narabe()
'
' narabe Macro
'

'

    Rows("2:201").Select
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("G2:G201") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A2:j201")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Dim LastR As Long

 LastR = Columns("b").Find("*", Cells(Rows.Count, "b"), xlValues, , , xlPrevious).Row - 1
 With Sheets("sheet1")
     With Range("a2")
      Range("v2").Copy .Cells
     End With
     With Range("a3")
       Range("v3").Copy .Cells
       .AutoFill .Resize(LastR - 1)
       Range("A1").Select
     End With
 End With

End Sub


 Sortメソッドが2007のものになっています。

 Rows("2:201").Sort key1:=Range("g2"), order1:=xlAscending, header:=xlGuess

 に変更してみてください。
 (seiya)

 Seiyaさん,ありがとうございます。

 Rows("2:201").Select
 →Rows("2:201").Sort key1:=Range("g2"), order1:=xlAscending, header:=xlGuess

 でいいのでしょうか。(たいが)

 Row("2:201").Select から
 End With
 までを 変更する必要があります。

 Sheets("Sheet1").Range("A2:J201").Sort key1:=Range("g2"), order1:=xlAscending, header:=xlGuess

 でどうですか?
 今日はここで落ちます、何かありましたら明日になりますので...
 (seiya)

コメント返信:

[ 一覧(最新更新順) ]


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