|
▼魚 さん:
こんばんは。
>データはA〜AP列×45,000行あります。
45000行もあるデータをExcelで扱ったことがありません。
(このような場合、Access等のデータベースに移行してしまいます)
>それからコードはシンプルにして
>質問ですが、上記のようにソート範囲の指定をせずとも
>A〜APはきちんとソートされますか?
Worksheets(1).Range("A1").CurrentRegion
と記述していますね!!これは、アクティブセル領域 を返すプロパティです
(アクティブセル領域 については、Helpを参照のこと)。
よって、ソート範囲は指定されています。
>A〜APはきちんとソートされますか?
CurrentRegionでは、以下のようなデータの場合、正しくソートされません。
新規ブックの標準モジュールに
'===============================================================
Option Explicit
Sub main()
Call mk_sample 'サンプルデータの作成
MsgBox "sort ready"
With Worksheets(1).Range("A1").CurrentRegion
.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin
End With
End Sub
'========================================================================
Sub mk_sample()
With Range("a1:ap1")
.Formula = "=""項目""&column()"
.Value = .Value
With .Offset(1, 0).Resize(30)
.Formula = "=int(rand()*1000)+1"
.Value = .Value
End With
.Offset(31, 0).EntireRow.ClearContents
With .Offset(32, 0).Resize(5)
.Formula = "=int(rand()*1000)+1"
.Value = .Value
End With
End With
end sub
上記のコードをコピーして実行してみてください。
実行すると、サンプルデータをアクティブシートに作成します。
A列〜AP列にサンプルデータを作成しますが(A1からAP40で1行目は、項目名)、
32行目だけが全て未入力になっています。
このようなデータに対して、
Range("A1").CurrentRegion
で取得するセル範囲は A1〜AP31であって、A1〜AP40にはなりません。
このようなデータになる可能性がある場合は、
CurrentRegion で正しくセル範囲を取得できませんから、注意が必要です。
|
|