• ベストアンサー

エクセルで網掛けの入ったセルを並び替え(昇順・降順)するには

エクセル97で、例えば、C列に「黄色」の網掛けが 入ったセルがあったとしたら、黄色のセルが入った行を、 上に持ってきたり、下にもってきたり、と並びかえる 方法を探してるのですが、解決手段はありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

No.1です。 もう一度確認して下さい。 ・名前定義をする時に、作業列の1行目(D1とかZ1とか)を選択しているか? ・網掛けをしているのは、本当にC列か? ・名前定義の参照範囲の数式はあっているか? ・網掛けの色を変更した後に必ず[F9]で再計算しているか? あと、No.2の方の方法でうまくD列に1/0が入ったのなら、 CD列を選択して、メニューの[データ]→[並べ替え]で、 [最優先されるキー]にD列を指定して、昇順/降順を選んで下さい。

noitigo
質問者

お礼

度々の御回答ありがとうございます、maruru01さん!!! 出来ました! >CD列を選択して、メニューの[データ]→[並べ替え]で、 >[最優先されるキー]にD列を指定して、昇順/降順を >選んで下さい。 ポイントは、まずCD列を選択することと、「並べ替えボタン」を使わずに、「メニューの並べ替え」コマンドを使い、選択する列を「D列」にすることだったみたいです! 皆様には常識だったのかもしれませんが、私には気がつかないポイントでした…^^;すみません 最後までお付き合い頂きまして本当にありがとうございましたm(_ _)m

その他の回答 (3)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

No.1です。 >全て「0」になってしまいます! 参照範囲の数式を、 「=GET.CELL(64,C1)+NOW()*0」 にしてみてい下さい。(63→64) >あと、セルには最初から文字列が入ってる場合を想定していますので >「数字」が入らない方法を探してるのですがごぞんじありませんか? 作業列はどこでもいいので、使用していない列にして下さい。 Z列とか遠い列でもOKです。 その場合は、Z1を選択して、名前定義をします。 (先に元の名前定義を削除して下さい。) そして、この作業列を非表示にしておいてもOKです。

noitigo
質問者

お礼

おはようございます。maruru01さん 再び御回答下さり、ありがとうございましたm(_ _)m >参照範囲の数式を、 >「=GET.CELL(64,C1)+NOW()*0」 >にしてみてい下さい。(63→64) 試してみましたが、駄目でした(TY) 全て「0」が出てしまいます。 エクセル97では駄目なのですかね。。 ん~~、なにか中途半端に投げ出す気もするのですが、ひょっとしたらどうあがいても出来ない機能を私が求めてるのかもしれませんし、もう一日色々やってみて駄目そうでしたら今回は締め切らせて頂きますm(_ _)m 御アドバイスとても感謝しております。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

#1さんのマクロ関数で上手く行かないとすると、色の指定が違うのかも。 =IF(色番号<>0,1,0) のようにするとどうでしょう?(色付きなら1) 他に、マクロでやるならこんな感じとか。 (C列が色付セルならD列に1、それ以外なら0) Sub Test() Dim sr As Range For Each sr In Range("C1:C" & Range("C65536").End(xlUp).Row)   If sr.Interior.ColorIndex <> xlNone Then     sr.Offset(0, 1) = 1   Else     sr.Offset(0, 1) = 0   End If Next sr End Sub 他のバージョンは不明ですが、Excel97では色で普通にソートをかけるのは無理でしょう。 空いている何れかの列を作業列にして並び替えるのが現実的だと思います。

noitigo
質問者

お礼

おはようございます。papayukaさん 朝の出勤が早いので、夜中に返信が出来ないのでごめんなさいm(_ _)m maruru01さんの方法をもとに、papayukaさんの方法を試してみました! >(C列が色付セルならD列に1、それ以外なら0) この通りになりました! ですが、これをもとに(?)並び替えを実行してみましてもそうならないのです(TT) >他のバージョンは不明ですが、Excel97では色で普通にソートをかけるのは無理でしょう。 そうだったのですか・・・! とにかく、考えて御回答下さりありがとうございました!!

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 作業列を使用する方法です。 作業列はD列とします。 D1を選択して、メニューの[挿入]→[名前]→[定義]で、 [名前]:適当な名前(仮に「色番号」とする) [参照範囲]:「=GET.CELL(63,C1)+NOW()*0」 として、[OK] そうしたら、D1に、 =IF(色番号=6,1,0) と入力して、下の行へコピーします。 これで、D列には、黄色(色番号が6)なら「1」、それ以外なら「0」が入ります。 あとは、このD列をキーにして並べ替えて下さい。 なお、セルの色を変更した場合は、必ず一度[F9]を押して再計算して下さい。 (再計算しないと、色の変更が反映されません。) 黄色以外の色にする場合は、D列に入れる数式を、 =色番号 とすれば、C列に設定されている色の番号がわかります。 (色設定が「自動」の場合は「0」になります。) それで、目的の色の色番号を調べて、元の数式の、 「色番号=6」 のところを修正して下さい。

noitigo
質問者

お礼

maruru01さん、ご回答ありがとうございます! 一応、わけがわからぬまま、やってみたのですが、どうも・・・ >これで、D列には、黄色(色番号が6)なら「1」、 >それ以外なら「0」が入ります。 >あとは、このD列をキーにして並べ替えて下さい。 この部分がうまくいきません・・・。 黄色の網掛けにしても(最初からしといても)、「1」とは出てきません! 全て「0」になってしまいます! あと、セルには最初から文字列が入ってる場合を想定していますので「数字」が入らない方法を探してるのですがごぞんじありませんか? またここを覗かれまして、またお手が空いてらしてご存知でしたらでかまいませんので、その時はどうぞよろしくお願いしますm( _ _ )m

関連するQ&A

専門家に質問してみよう