OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

エクセルの並び替えがうまくいきません

  • 困ってます
  • 質問No.217796
  • 閲覧数208
  • ありがとう数8
  • 気になる数0
  • 回答数7
  • コメント数0

お礼率 72% (13/18)

表に入力してあるよみがなを並び替えたいのですが、スペースが間に入っているものと入っていないものがあるので、次のような式を使ってスペースをとりました。
=IF(読み仮名データセル="","",IF(ISERROR(LEFT(読み仮名データセル,SEARCH(" ",読み仮名データセル,1))),読み仮名データセル,LEFT(読み仮名データセル,SEARCH(" ",読み仮名データセル,1)-1)&RIGHT(読み仮名データセル,LEN(読み仮名データセル)-SEARCH(" ",読み仮名データセル,1))))
回りくどい式ですが、もし読み仮名のデータがあれば、スペースの位置を検索して、スペースがなければそのまま読み仮名を表示、あればスペースの右と左だけを結合して表示する、というものです。
これを 名簿表のずっと右の方で作業して、スペース無しの読み仮名を書き出しました。
この読み仮名の一覧を、もとの読み仮名のところに「値だけ貼り付け」して、並び替えをしたのですが、なぜか以下のようになってしまいます。
最初のデータ

「    」(スペース)
あおのあおこ
えんどうえつ
うちだうちこ
かきだかきこ
いむらいまこ
「    」(スペース)

これを並び替えしてみると、

「    」(スペース)
「    」(スペース)
あおのあおこ
いむらいまこ
うちだうちこ
えんどうえつ
かきだかきこ

となってしまいます。

本当は、「    」(スペース)には列の一番最後に言って欲しいのですが・・・。
こうなって欲しい・・

あおのあおこ
いむらいまこ
うちだうちこ
えんどうえつ
かきだかきこ
「    」(スペース)
「    」(スペース)

なにかいい方法はあるでしょうか?
通報する
  • 回答数7
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.7
レベル9

ベストアンサー率 69% (51/73)

計算式が入っている空白のセルをnullにします。
空白セルのある列の最上段のセルを
1クリックしてからマクロを開始してください。

一度でも使用したことのあるセルを最終行と
するので、ごみが下の方にあるとそこまで
処理します。使っていないセルが表外にある
時は削除して、上書保存後に使ってください。
ごみは時間がかかるという程度の問題ですが。

これなら行を指定しなくても全部処理します。
Range("A1").Select
などで開始位置を指定すればマクロから自動です。

ちなみに空白を取り除くものは下の関数もあります。
=SUBSTITUTE(A1," ","")置き換え





Sub 計算式をnullに()

開始位置 = ActiveCell.Address
現在行 = ActiveCell.Row
現在列 = ActiveCell.Column
最終位置 = ActiveSheet.Cells.SpecialCells(xlLastCell).Address
最終行 = ActiveCell.Row
最終列 = ActiveCell.Column

For I = 現在行 To 最終行

If LenB(Cells(I, 現在列)) = 0 Then
Cells(I, 現在列) = Null
End If

Next

Range(Cells(現在行, 現在列), Cells(最終行, 現在列)).Select

End Sub


マクロの使い方などは質問ください。
お礼コメント
kitunekko

お礼率 72% (13/18)

さっそく試してみました。
何故か
Cells(I, 現在列) = Null
ではうまくいきませんでしたが、
Cells(I, 現在列).ClearContents
にしたところ、並び替えが思い通りに動くようになりました。
ありがとうございました。
投稿日時 - 2002-02-16 16:49:13
-PR-
-PR-

その他の回答 (全6件)

  • 回答No.2
レベル8

ベストアンサー率 25% (10/40)

これはスペースだけ(スペースのデータが存在する)のセルがあるということですよね? それならば、このスペースだけのセルを空セルにすればいいです。 具体的には、スペース(” ”)をヌル(””)にすれば可能です。 ...続きを読む
これはスペースだけ(スペースのデータが存在する)のセルがあるということですよね?
それならば、このスペースだけのセルを空セルにすればいいです。
具体的には、スペース(” ”)をヌル(””)にすれば可能です。
補足コメント
kitunekko

お礼率 72% (13/18)

私の立てた式をごらんいただきましたように、参照先の読み仮名データセルが空白セルの場合には、""つまり空セルとするように指定してあるのです。
普通の空白セルは並べ替えの時には最後尾にいくのに、なぜか この場合は最前列にきてしまうのです。
投稿日時 - 2002-02-14 22:50:11
お礼コメント
kitunekko

お礼率 72% (13/18)

ありがとうございます。ほかにも何かアイデアがありましたら教えていただけますか?
投稿日時 - 2002-02-14 22:53:52

  • 回答No.1
レベル10

ベストアンサー率 61% (75/121)

並び替えの列を =IF(LEN(TRIM(参照セル))=0,"ん",参照セル) なんてしてはいかがでしょうか? ...続きを読む
並び替えの列を
=IF(LEN(TRIM(参照セル))=0,"ん",参照セル)
なんてしてはいかがでしょうか?
補足コメント
kitunekko

お礼率 72% (13/18)

名簿に使う表は毎月150件ほど用意してあるのですが、なにかもっと・・・スマートな方法はないでしょうか・・・?
投稿日時 - 2002-02-14 22:35:20
お礼コメント
kitunekko

お礼率 72% (13/18)

早速のお返事をありがとうございます。ほかにも何かアイデアがありましたら教えていただけますか?
投稿日時 - 2002-02-14 22:53:32
  • 回答No.3
レベル9

ベストアンサー率 41% (40/97)

どうしても文字よりもスペースが上に来てしまうので、  1.あとで自分で入れ替える  2.スペースの場合は適当な漢字を入れておく  3.スペース部分には全角のスペース1つ、読み仮名が入力されている場合は    読み仮名の前に半角スペースを入れて     データ→並べ替え→オプション→大文字と小文字を区別するにチェック などしか無いと思います。 あと、スペースを除くには、  =SU ...続きを読む
どうしても文字よりもスペースが上に来てしまうので、

 1.あとで自分で入れ替える
 2.スペースの場合は適当な漢字を入れておく
 3.スペース部分には全角のスペース1つ、読み仮名が入力されている場合は
   読み仮名の前に半角スペースを入れて
    データ→並べ替え→オプション→大文字と小文字を区別するにチェック

などしか無いと思います。

あと、スペースを除くには、
 =SUBSTITUTE(読み仮名データセル," ","")
で簡単に出来ます。
補足コメント
kitunekko

お礼率 72% (13/18)

データ量が多く、かつエクセル初心者が扱えるように、なるべく手作業は減らしたいのです。
名簿用のスペースは毎月150件ほどを用意してあり、毎回漢字をいれたり 入れ替えをするのは避けたいと思っています。
また、私の立てた式をごらんいただきましたように、スペース部分には""、つまり空白を指定してあるので、何も入っていないはずなのに、上記のような結果になってしまうのです。何もない=""セルをコピーして「値を貼り付け」すると、どうも何かがセルに代入されてしまうのでしょうか・・?教えていただいた、=SUBSTITUTE(読み仮名データセル," ","") という式も試してみましたが やはり同じ結果になりました。
投稿日時 - 2002-02-14 22:42:28
お礼コメント
kitunekko

お礼率 72% (13/18)

ありがとうございます。ほかにも何かアイデアがありましたら教えていただけますか?
投稿日時 - 2002-02-14 22:49:53
  • 回答No.4
レベル7

ベストアンサー率 25% (7/27)

最初に降順で並び替えて空白データを後ろに持っていって、次に空白以外のデータを昇順で並び替えるってのはどうでしょう? ...続きを読む
最初に降順で並び替えて空白データを後ろに持っていって、次に空白以外のデータを昇順で並び替えるってのはどうでしょう?
補足コメント
kitunekko

お礼率 72% (13/18)

エクセル初心者でも 直感的に扱えるよう、なるべく手作業を排除したいのです。
投稿日時 - 2002-02-14 22:44:19
お礼コメント
kitunekko

お礼率 72% (13/18)

ありがとうございます。ほかにも何かアイデアがありましたら教えていただけますか?
投稿日時 - 2002-02-14 22:46:12
  • 回答No.5
レベル9

ベストアンサー率 69% (51/73)

毎回あるということでしたら マクロで作られてはいかがですか。 並べ替えてから、 スペースだけ最下段へ移動 というようなものを。 マクロでも可ですか。 マクロを使ったことはありますか。 作り方は質問ください。 ...続きを読む
毎回あるということでしたら
マクロで作られてはいかがですか。
並べ替えてから、
スペースだけ最下段へ移動
というようなものを。
マクロでも可ですか。
マクロを使ったことはありますか。
作り方は質問ください。
補足コメント
kitunekko

お礼率 72% (13/18)

今回もマクロを使っているのですが、VBAは使ったことがないので マクロの編集は手探り状態です。
  (^_^; アハハ…

もし 「 値の貼り付け 」をした後の ""を貼り付けたセルだけ、もう一度選択して、「デリート」をかけられたら、解決するのですが、そういうこともできますでしょうか?(手作業で そういうセルを選択して「デリート」をすると、並び替えがうまくいくことがわかったので)
投稿日時 - 2002-02-16 06:25:43
お礼コメント
kitunekko

お礼率 72% (13/18)

ありがとうございます。教えていただけたら幸いです。
投稿日時 - 2002-02-16 06:31:00
  • 回答No.6
レベル9

ベストアンサー率 41% (40/97)

スペースの場合は適当な漢字を入れておくっていうのは、 =IF(読み仮名のセル="","一",SUBSTITUTE(読み仮名のセル," ","")) のような感じです。「一」は漢数字の1です。 これで、読み仮名のセルに何も入っていない場合は「一」と表示が出ます。 これで並べ替えをすると、「一」の入っているセルは実際に ...続きを読む
スペースの場合は適当な漢字を入れておくっていうのは、
=IF(読み仮名のセル="","一",SUBSTITUTE(読み仮名のセル," ",""))
のような感じです。「一」は漢数字の1です。
これで、読み仮名のセルに何も入っていない場合は「一」と表示が出ます。
これで並べ替えをすると、「一」の入っているセルは実際にひらがなで
読み仮名が入っているセルより下に行きます。
表示は下のようになります。



あおのあおこ
えんどうえつ
うちだうちこ
かきだかきこ
いむらいまこ
補足コメント
kitunekko

お礼率 72% (13/18)

なるほど~・・。それも一手かもしれませんねぇ。
なるべくシンプルな形で解決したいとは思うのですが、いざとなったらそれですねぇ。
投稿日時 - 2002-02-16 06:20:19
お礼コメント
kitunekko

お礼率 72% (13/18)

どうもありがとうございました。
投稿日時 - 2002-02-16 06:25:33
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ