[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『欠番抽出』(らく)
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.