[[20110208104724]] 『欠番抽出』(らく) ページの最後に飛ぶ

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

 

『欠番抽出』(らく)

A列には通し番号が入っています。(1〜MAXまで順不同で入力してあります。)。番号には欠番(空白)があり、その欠番を抽出したいのですが、方法はありますでしょうか?ちなみに複数の表にて使用したいので、MAXの数字は変動します。あと、その欠番を全部埋めて並び替えると1から順番にMAXまで数字がそろいます。今までは欠番を手作業で埋めてから、並び替えをしていました。量があるもので作業がおいつきません。お力をお貸しください。


 「欠番を抽出」 の部分について

 B1=IF(MAX(A:A)-COUNT(A:A)<ROW(),"",SMALL(INDEX(COUNTIF($A$1:$A$100,ROW($A$1:$A$100))*100+ROW($A$1:$A$100),),ROW()))

 MAXを100として式を立てています 100の部分を多めにしてください
 あまり行数が多い場合はおすすめしません

 マクロの案です。

 Sub Sample1()
    Dim Maxbuf As Long
    Dim i As Long
    Dim buf As String

    Maxbuf = Application.WorksheetFunction.Max(Range("A:A"))
    For i = 1 To Maxbuf
        If Range("A:A").Find(i, , , xlWhole) Is Nothing Then buf = buf & i & vbCrLf
    Next i
    MsgBox buf
 End Sub

 [Alt]+[F11]でVBEを起動。メニューバーより[挿入]-[標準モジュール]を選択し、
 右側の大きな空白部分に上記コードを貼り付け。VBEを右上「×」で閉じて、
 実行は[Alt]+[F8]でSample1を選択して実行。
 メッセージボックスに結果が表示されます。

 (Yujin)


 あ、欠番を埋めてから並べ替えでしたね。

 Sub Sample2()
    Dim Maxbuf As Long
    Dim i As Long
    Dim buf As String
    Dim LastR As Long

    Maxbuf = Application.WorksheetFunction.Max(Range("A:A"))

    For i = 1 To Maxbuf
        LastR = Range("A65536").End(xlUp).Row
        If Range("A:A").Find(i, , , xlWhole) Is Nothing Then Cells(LastR + 1, 1) = i
    Next i

    Range("A:A").CurrentRegion.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal

 End Sub

 こちらでどうですか?

 (Yujin)

できました。すごいですね。こんなこともできるんだと感激しました。勉強にはげみます。

コメント返信:

[ 一覧(最新更新順) ]


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