[[20060325102607]] 『ソートすると空白が先に』(苦学生) ページの最後に飛ぶ

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

 

『ソートすると空白が先に』(苦学生)

いつもお世話になっています。
名簿のあいうえお順にソートすると空白部分が上位に表示されます。これを逆に
氏名が先に表示され空白部分は最後尾に表示したいのですが・・・
マクロの記録を使って作ったものです。

    Range("A1:p161").Select
    Range("p161").Activate
    Selection.Sort Key1:=Range("e2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal
     Range("b2").Select
End Sub
   

名簿はA1がタイトルでA2からp161まであって、実際にはA122までしか氏名が入っていませんが
ソート範囲はA1〜p161までとなっています。
xp2003です。
よろしくお願いいたします。


 こんにちは

 ■■■最終行の取得■■■

 指定範囲内での最終行
 A1〜A65536の範囲で最後に入力されているセルの内容を返します。
 .Range("A1", .Range("A65536").End(xlUp)).Value

 シート内でA1から一番遠いセルを返します
 Selection.SpecialCells(xlCellTypeLastCell)

 これ応用できませんかね??

 (Null)

(Null)さんへ
有り難うございました。・・・でも
何をどこへ貼り付けるのかも分からずやっていますので
やはりだめでした。
→.Range("A1", .Range("A65536").End(xlUp)).Value これもどこかに貼り付けなくてはダメなんでしょうね。

↓のようにやってみましたが、

    Range("A1:p161").Select
    Range("p161").Activate
    Selection.Sort Key1:=Range("e2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal
    Selection.SpecialCells (xlCellTypeLastCell)

     Range("b2").Select

せっかく教えて頂いてるのに理解する能力が無くてゴメンナサイね。
もしよかったらもうちょっとだけお付き合い下さい。


 空白が上に来るのは、本当の空白ではなくスペースが入っているか、
数式で""が返ってきているのではないかと推測します。

 その辺りを確認してみてください。

 (川野鮎太郎)

 ですねf^^;
 空白あると最後のセルの判定も変わっちゃうみたいなんで。。。

 無駄なものを消さなきゃだめみたいですorz

 (Null)

(川野鮎太郎)さんへ
有り難うございます。!
sheet1があって全校名簿になっています。作業しているのはsheet2でそれはsheet1からコピーしてきました。

確かにsheet1のE2(sheet2のソートキーになるところ)は=PHONETIC(D37)でカタカナからひらがな変換したものです。

ふりがなが入力されていないところをクリックしても何も表示はされませんでしたので空白と思っていたのですが、あらためて空白の部分を指定してdellキーで削除してからもう一度やってみたらうまく氏名が上位にきました。

__わかりにくい説明でスミマセン__

もう一度マクロ記録をやり直して「空白の部分を指定してdellキーで削除」を追加することにします。・・・本当はこれからいつ転入生があるかもしれませんので空白の部分も指定する範囲や数式などは残しておきたい所なんですがしかたないようですね。

(Null)さん、(川野鮎太郎)さん有り難うございました。 
__仕事が多くて(苦)るしんでいる(学)校の(生)活指導担当者より__


 もうみないですかねf^^;

 Range("A1:",.Range("P65536").End(xlUp)).Select

 の選択範囲を

 Range(Range("A1"), Range("A1:P161").SpecialCells(xlCellTypeLastCell)).select

 にすると、選択範囲を可変にできますよ

 (Null)


 E列の空白以外でフィルタ掛けてからやってみました。
 
Sub Test()
    Range("A1:P161").AutoFilter Field:=5, Criteria1:="<>"
    EndRow = Range("E1").End(xlDown).Row
    Range("A2:P" & EndRow).Sort Key1:=Range("E2")
    Range("A1:P161").AutoFilter Field:=5
End Sub

 ただ、途中に空白がある場合はダメでした・・・_/ ̄|○ il||li

 (川野鮎太郎)


(Null)さん(川野鮎太郎)さん有り難うございます。

今からやってみます。

もう一つ質問させて下さい。

今使っているパソコンはBAIOでこのファイルをNECラビエで実行すると

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _

        :=xlPinYin, DataOption1:=xlSortNormal
     Range("b2").Select

の部分でエラーになります。

メモリースティックでコピーして持って行ってもだめで、
無線ランで共有していてそこから覗いて実行しても同じ場所でエラーになります。

これはどうしてなのでしょうか。これでは、明後日職場のパソコンで仕事をすることが怪しくなってきました。是非良い解決策をお教え下さい。まだ見てくれているかな。私はほとんど毎日、十数時間この学校を見て勉強?(遊んでる?)しています。ほとんど病気です。
(くがくせい)


 どんなメッセージがでてエラーになるのか教えていただけますか??

 (Null)

有り難うございます。

もう数時間あとで載せます。ただ今
そちらのパソコンを家内が使用中なので・・・ゴメンナサイ(くがくせい)


 「コンパイルエラー 名前付引数が見つかりません」では?
引数DataOption1(および2、3)はExcel2002からのオプション。
(みやほりん)(-_∂)b


遅くなりました。

実行時エラー!1004!:
アプリケーション定義またはオブジェクト定義のエラーです。

という表示が出てデバッグというところを押すと

Selection.Sort Key1:=Range("b2"), Order1:=xlAscending, Header:=xlYes, _

        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal
のところが黄色で表示されています。

他にも男女別や地区別に並べ替えるためのマクロの記録も作ったのですが同じ所で
同じコメントが出ます。私のパソコンに移し替えたら支障なく動いてくれます。
画面はソート範囲を指定したところで止まっています。

お願いいたします。気になるところは
正常な方は1列めは項目の所なのでちゃんとソートしませんが、止まる方はソート範囲に
含まれているのか青く範囲指定の色が付いています。マクロの記録の時にタイトル行を指定したのでそれは範囲外なので良いとは思うのですが。

何卒 何卒 よろしく


 みやほりんさんが理由は書いてくれてあります。
エラーの出るExcelのバージョンはなんですか?
(kenbou)


 エラーが出るのであれば、引数を全部消したらどうなんでしょう・・・。
Selection.Sort Key1:=Range("b2")  ←これだけにする。

 って、σ(^_^;)も2002で試したから、2000以前ではどうなるのか・・・_/ ̄|○ il||li

 (川野鮎太郎)


ありがとうございます。昨夜はショックで?寝てしましました。
エクセルは2003で両方とも同じだと思うんですが、以前右クリックが利かないことを質問した事があったのですがその時はエクセル2000の表示が出ていました。そしてkazu先生の言うとりにしたら2003の表示に戻っていました。今でもヘルプで調べると20003と出ます。

(川野鮎太郎)さんの
>Selection.Sort Key1:=Range("b2")  ←これだけにする。

を実行しました。そしたら、1列目のタイトル行もソートされてしまいましたので

   

 Range("A1:p161").Select  ←A1をA2に変えたらうまくいきました。
    Range("p161").Activate
    Selection.Sort Key1:=Range("e2")

多分2台とも同じエクセル2003なのに同じ事ができないとはちょっと不安が残りましたが
何とか明日は使えそうです。皆様、ありがとうございました!。_くがくせい_



 今日職場で試したら

 Order1:=xlAscending, Header:=xlYes, _ 
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod 
 :=xlPinYin, DataOption1:=xlSortNormal

 ↑のついている方も、付いていない方も両方うまく動きました。職場のパソコンは2003
 より一つ前のバージョンらしいです。終了するときに「変更を保存しますか」「以前
 のバージョンで保存したファイルは自動的に計算・・・」のコメントが出ますのでそ
 う思います。
 みなさん本当に有り難うございました。
 ・・でも何でなんでしょうね。同じ2003どうしなのにやっぱりどこか壊れているので
 しょうかね。(独り言)                        _くがくせい_ 

 追加 
 プレビューで見たらやっと皆さんと同じように文字が小さくなりました。\(^O^)/

 >プレビューで見たらやっと皆さんと同じように文字が小さくなりました。
 ココにだけ〜

 こちらが参考になりますでしょうか?
[[20060131013843]]『この掲示板に書き込む時の改行方法』(doyle)
 
 (キリキ)(〃⌒o⌒)b


 ありがとう。実は
 '太字'もうらやましく思っていたんです。子どもみたいですが・・・
 でも何十回やってプレビューで見ても太字にはなりませんでした。
 まあこういうテクニックは回答する先生たちが使った方が良いように思います。
 初心者は初心者らしく分相応に
 ・・・書き方は難しいですね、ヒガンでいるみたいに変に誤解されないかと・・
 特に「まあ」と書くとどのように受け取られるのですかね。決して変な意味はありませんのでくれぐれも誤解されませんように。祈るばかりです。
 いかんいかん最近この学校に長くいるせいか考えすぎるようになってきましたわい。

 テクニックでは無いですよ〜♪
 ようは、慣れだと思います。
 下に「太字」と書いてみましょう〜!

 ''太字'' 
  ↑_''太字''と記入してます。
 太字
  ↑ ''_太字''と記入してます。
太字
  ↑ ''太字''と記入してます。
 ついでに斜め
  ↑ '''_ついでに斜め'''と記入してます。

 ※「_」は、半角スペースの意味。
 (キリキ)(〃⌒o⌒)b

 ’’ 太字’’←半角スペース全角’全角’太字全角’全角’
 ''太字''   ←半角スペース半角'半角'太字半角'半角'
 '' 太字''  ←半角スペース半角'半角'半角スペース太字半角'半角'
 ’’ 太字’’←半角スペース全角’全角’半角スペース太字全角’全角’
 太字     ←半角'半角'半角スペース太字半角'半角'←これだったんですね
 やっとできました!。
 先に半角スペースで小文字になったばかりなので半角スペースにこだわっていました。
 ありがとう!!!!!!!。(*^O^*)

 追加
' 半角'    ←’が片方に4個
 半角   ←’が片方に5個
' 半角'  ←’が片方に6個

 3個以上は意味がないことも分かりました。(くがくせい)

コメント返信:

[ 一覧(最新更新順) ]


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