人に聞けない痔の悩み、これでスッキリ >>

Excel(XP)で並び替えを行うと、どうやら、内在しているフリガナのデータに従って並び替えを行っているようです(PHONETIC関数で確認できるやつ)。

しかし、他のデータベース等からCSVファイル経由でExcelに取り込んだデータはフリガナデータを持っていないため、Excelで直接入力したデータと混在させると、“並び替え”を行っても、同じデータが入っているにもかかわらず、同じデータとして扱われていない状態です。

フリガナデータを無視して、文字コード順等に並び替えを行うようにする方法はあるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

Excelでは最初「ふりがなを使う」がオンになっていますので、


データメニューからのべ替えでオプションボタンを押し、方法を「ふりがなを使わない」にして下さい。

なお、下記のような事も並べ替えがうまく行かない原因だと報告されています。
QA [Excel] 並べ替えを行うと 100 の次に 10 がきてしまう場合の対処方法

参考URL:http://support.microsoft.com/default.aspx?scid=% …
    • good
    • 0

一度メモ帳にコピーして、それをExcelに貼り付け直せばフリガナデータとは関係なく文字コード順に並べかれます。

    • good
    • 1

列を新しく挿入して、CODE関数を使えば文字コード順にできると思いますが。

    • good
    • 0

並び替え時に「オプション」を押して「ふりがなを使わない」にチェックしてください。

    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

Qexcelで文字コード(JISコード)を表示する関数ってありますか?

仕事の都合で、JISコードを調べなければならなくなったのですが、
調査対象がいっぱいあって困っています。
excel(に限りませんが、excelが使い慣れているので)の関数などで、
文字コードを返してくれる関数などってありますか?
CODE関数を試してみたのですが(=CODE(山))、循環参照というエラーが出てしまって困っています。
できれば複数の文字(1行単位など)が一度に文字コード変換ができればいいのですが、無理なら1文字ごとでもいいので探しています。
教えてください。

Aベストアンサー

文字列がA1にあると仮定して、

B1に下記数式を記入して、右方向にフィルコピー♪
=IF(ISERROR(CODE(MID($A$1,COLUMN(A1),1))),"",CODE(MID($A$1,COLUMN(A1),1)))

この中で、「COLUMN(A1)」はセル番地を変更しなくていいです。
実際に文字が存在する番地に合わせて変更するのは、
「MID($A$1」 このMIDの右のセル番地だけです。

これでセルに含まれた文字数分、右にコピーすれば
一文字づつコードが返ります。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Q文字列をソートする方法

数値をソートする方法にはバブルソートやクイックソートなどがあり
アルゴリズムは分かるのですが
文字列を五十音順にソートしたい場合にはどのようにしたら良いですか?


検索をかけてみたのですが、大抵プログラミング言語に備わったsortの方法が紹介されており
自分で処理を行う方法については書かれていません。


ExcelのSort機能を使わない方法で教えてください。

Aベストアンサー

例えばバブルソートは
for j=0 to AMax
 for i=1 to AMax-j
  if A(i-1)>A(i) then
   入れ替え
  end if
 next
next
大体こんな感じですよね。
ここでは、大小比較に「>」を使っています。

ここで 「比較」 という関数を定義したとします。
比較(x,y) :
x が yより「大きい」ときは 正の値、「等しい」なら0、 「小さい」なら負の値を返す
これを使うと
for j=0 to AMax
 for i=1 to AMax-j
  if 比較(A(i-1),A(i)) > 0 then
   入れ替え
  end if
 next
next
と書けます。

さて
「大きい」「等しい」「小さい」
と「」付きで書いたのには理由があります。
後ろにくるべきものを「大きい」前にくるべきものを「小さい」と判定するように作れば、実は、実際の数値の大小以外にも使えるのです。
例えば 、x>y のとき 負、x<yのとき正 として作れば 実際には数の小さい方が「大きい」というということになり、その結果、逆順にソートされます。

この比較関数を使った方法は、他のアルゴリズムでも同様です。



> 文字列を五十音順にソートしたい場合

五十音順並べた時の大小関係を返す比較関数を用意しましょう。
いわゆる「辞書順」というのは
(1) 1文字目同士比較する。
(2) 違いがあれば、(1)の比較結果が文字列同士の比較結果
(2-1) もし、どちらか一方だけが文字が無い場合は、短い方が「小さい」
(2-2) 両方との文字が無くなったら、「等しい」
(3) 2文字目、3文字目...について(1)から同様に確認
というアルゴリズムになっています。



一応、文字列も 不等号で比較できますし、 StrCompという文字列比較関数もあります。
これらで間に合うようなら、使えばいいでしょう。
それで期待通りにならない場合は、比較関数を自作してみましょう。

例えばバブルソートは
for j=0 to AMax
 for i=1 to AMax-j
  if A(i-1)>A(i) then
   入れ替え
  end if
 next
next
大体こんな感じですよね。
ここでは、大小比較に「>」を使っています。

ここで 「比較」 という関数を定義したとします。
比較(x,y) :
x が yより「大きい」ときは 正の値、「等しい」なら0、 「小さい」なら負の値を返す
これを使うと
for j=0 to AMax
 for i=1 to AMax-j
  if 比較(A(i-1),A(i)) > 0 then
   入れ替え
  end if
 next
next
と書けます。

さて
「大きい」...続きを読む

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Q文字型の順番がうまく並ばない。

よろしくお願いします。
WIN2000、VB6.0+Oracleで開発しています。

select文で実行すると並び順が違ってしまう。
文字型をソートすると「$ * 0~9 A~Z」の順番になってしまうのですが、これは普通なのでしょうか?
出来れば「$ * A~Z 0~9 」と並びたいのですが。

Select文
SELECT DISTINCT gkey,G01,G02,G03,G04,G05,G06,G07,G09,G10,to_char((G217+G227+G237+G247) , '9,999,999,999') AS ZissekiG ,G249 FROM SHYOUHIN WHERE G02 = '308'

結果
$ * 0~9 A~Z
になってしまいます。
(Gkey)
$00
$01
*02
*04
100
102
103
C00
N09

できれば 
$ * A~Z 0~9
(Gkey)
$00
$01
*02
*04
C00
N09
100
102
103
したいと思っています。ORDER BYでGkeyの指定してもうまくいかない…。
すいませんがどうしたら良いか、お願いします。

よろしくお願いします。
WIN2000、VB6.0+Oracleで開発しています。

select文で実行すると並び順が違ってしまう。
文字型をソートすると「$ * 0~9 A~Z」の順番になってしまうのですが、これは普通なのでしょうか?
出来れば「$ * A~Z 0~9 」と並びたいのですが。

Select文
SELECT DISTINCT gkey,G01,G02,G03,G04,G05,G06,G07,G09,G10,to_char((G217+G227+G237+G247) , '9,999,999,999') AS ZissekiG ,G249 FROM SHYOUHIN WHERE G02 = '308'

結果
$ * 0~9 A~Z
になってしまいます。
(Gkey)...続きを読む

Aベストアンサー

>これは普通なのでしょうか?
普通です。
A-Z,0-9の並びは、EBCDICな文化を持つ環境で育った方には
自然な順番なんですが、unixやpcで使われるascii,sjis,eucでは、
0-9,A-Zの順番が普通です。

(EBCDICなコード順でソートする例)
SELECT DISTINCT gkey,G01,G02,G03,G04,G05,G06,G07,G09,G10,to_char((G217+G227+G237+G247) , '9,999,999,999') AS ZissekiG ,G249 FROM SHYOUHIN WHERE G02 = '308'
ORDER BY convert(gkey,'JA16EBCDIC930')

Qエクセルで名簿をあいうえお順に並べ替える方法。

タイトル通りなのですが、エクセルで名簿をあいうえお順に並べ替える方法を教えて下さい。
きっと単純な事なのでしょうが、分からなくて困ってます。
宜しくお願いします。

Aベストアンサー

 名簿の氏名をキーにして50音順に並べたいということだと思いますが、残念ながらフリガナが入力されてなければ漢字の氏名だけで正しい並べ替えは出来ません。
 
 いくらExcelのバージョンが新しくても漢字には音読みと訓読みがあり、漢字でソートするとほとんど音読みで並べます。
 だから例えば安永は「あんえい」に吉田は「きちでん」と読んで並べます。日本名の大半は訓読みですから期待する結果はほとんど得られません。

 ただし一つだけ試して欲しいのは、氏名の列の右にとりあえず1列挿入し、仮に氏名セルのトップがA2だとするとB2に次の式を入力して下方にコピーしてみてください。
=PHONETIC(A2)
 もし氏名を入力するとき読みどおり入力してあればその読みがB2に出るはずです。
 ダメもとでやってみる価値はあると思います。
 駄目なときはフリガナを入力してソートするしかないでしょうね。

Qエクセルでの並び替えでひらがなの後にカタカナにするには

エクセルの並べ替えでは、ひらがなだけでの50音順、その後に、カタカナだけでの50音順、というような並べ替えをすることができないのでしょうか?ふりがなを使わない設定にしても文字コード順になるだけで解決できません。並べ替える方法があれば教えて頂けないでしょうか?
よろしくお願いします。

Aベストアンサー

自分も同じようなことで悩みました。それでひねり出した方法ですが・・・

1、並び替えたい表の先頭にもう一つ列を加える。(自分は「優先順位」という名前にしています。)
2、ひらがなの前のセルには「1」を、ひらがなの前の列には「2」を入力。
3、並び替えの設定で、最優先させる列を今新たに作った列に指定し、2番目に優先させる列をひらがなカタカナ順にしたい列を指定する。
4、見た目が悪ければその列の幅を限りなく狭めればOKです。

本当はもっと専門的な方法があるのでしょうが、素人なのでこれ以上はわかりません。体裁や手間を気にしなければいけると思います。

Qvlookup関数で検索値を含む文字列を検索する方法

vlookup関数で例えば E1のセルに=vlookup(D1,A:C,3,false)とした場合、D1が佐藤であれば、A列に「佐藤」がある場合には当然、「佐藤」がある行の3列目の値が返されますが、「佐藤」はなく「佐藤A」や「A佐藤」がある場合にもこれらがある行の値を返して欲しいのですが、いい方法はありませんでしょうか。*を使ってできると思ったのですがうまくいきません。上記例で、=vlookup("*佐藤*",A:C,3,false)とすればできますが、*佐藤*の部分はD1の引用を利用したいのです。
 よろしくお願いします。

Aベストアンサー

=VLOOKUP("*"&D1&"*",A:C,3,FALSE)

Qエクセル SMALL の機能を文字列でもできないか

数値に対し小さいほうからn番目というのは
SMALLで出来ますが、2文字以上(最低15文字くらい
まで)の文字列に対しそれを行う方法は無いでしょうか?

なんらかの式の組み合わせで出来ないものでしょうか?

要するに名前(よみがな)などを昇順(または降順)に読み込み
ソートさせた状態で別表に表示させたいのですが
文字1文字ならCODEで何とかなるのですが
2文字以上となると・・・

VB等のプログラムは一切使わず関数の駆使でなんとかならない
ものでしょうか?

Aベストアンサー

◆先程の回答で、順位を表示させなくてもできます
   A       B
1  ああああ  ああ
2  ああ     あああ
3  あい     ああああ
4  あう     あい
5  あいあい  あいあい
6  いいい   あう
7  あああ   いいい

B1=IF(COUNTA(A:$A)<ROW(),"",INDEX(A:A,MATCH(ROW(),INDEX(COUNTIF($A$1:$A$10,"<="&$A$1:$A$10),),)))
★下にコピー


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング