プロが教える店舗&オフィスのセキュリティ対策術

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

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

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

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

となってしまいます。

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

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

なにかいい方法はあるでしょうか?

A 回答 (7件)

計算式が入っている空白のセルを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


マクロの使い方などは質問ください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/02/16 16:49

スペースの場合は適当な漢字を入れておくっていうのは、


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



あおのあおこ
えんどうえつ
うちだうちこ
かきだかきこ
いむらいまこ

この回答への補足

なるほど~・・。それも一手かもしれませんねぇ。
なるべくシンプルな形で解決したいとは思うのですが、いざとなったらそれですねぇ。

補足日時:2002/02/16 06:20
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2002/02/16 06:25

毎回あるということでしたら


マクロで作られてはいかがですか。
並べ替えてから、
スペースだけ最下段へ移動
というようなものを。
マクロでも可ですか。
マクロを使ったことはありますか。
作り方は質問ください。

この回答への補足

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

もし 「 値の貼り付け 」をした後の ""を貼り付けたセルだけ、もう一度選択して、「デリート」をかけられたら、解決するのですが、そういうこともできますでしょうか?(手作業で そういうセルを選択して「デリート」をすると、並び替えがうまくいくことがわかったので)

補足日時:2002/02/16 06:25
    • good
    • 0
この回答へのお礼

ありがとうございます。教えていただけたら幸いです。

お礼日時:2002/02/16 06:31

最初に降順で並び替えて空白データを後ろに持っていって、次に空白以外のデータを昇順で並び替えるってのはどうでしょう?

この回答への補足

エクセル初心者でも 直感的に扱えるよう、なるべく手作業を排除したいのです。

補足日時:2002/02/14 22:44
    • good
    • 0
この回答へのお礼

ありがとうございます。ほかにも何かアイデアがありましたら教えていただけますか?

お礼日時:2002/02/14 22:46

どうしても文字よりもスペースが上に来てしまうので、



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

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

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

この回答への補足

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

補足日時:2002/02/14 22:42
    • good
    • 0
この回答へのお礼

ありがとうございます。ほかにも何かアイデアがありましたら教えていただけますか?

お礼日時:2002/02/14 22:49

これはスペースだけ(スペースのデータが存在する)のセルがあるということですよね?


それならば、このスペースだけのセルを空セルにすればいいです。
具体的には、スペース(” ”)をヌル(””)にすれば可能です。

この回答への補足

私の立てた式をごらんいただきましたように、参照先の読み仮名データセルが空白セルの場合には、""つまり空セルとするように指定してあるのです。
普通の空白セルは並べ替えの時には最後尾にいくのに、なぜか この場合は最前列にきてしまうのです。

補足日時:2002/02/14 22:50
    • good
    • 0
この回答へのお礼

ありがとうございます。ほかにも何かアイデアがありましたら教えていただけますか?

お礼日時:2002/02/14 22:53

並び替えの列を


=IF(LEN(TRIM(参照セル))=0,"ん",参照セル)
なんてしてはいかがでしょうか?

この回答への補足

名簿に使う表は毎月150件ほど用意してあるのですが、なにかもっと・・・スマートな方法はないでしょうか・・・?

補足日時:2002/02/14 22:35
    • good
    • 0
この回答へのお礼

早速のお返事をありがとうございます。ほかにも何かアイデアがありましたら教えていただけますか?

お礼日時:2002/02/14 22:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!