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

こんにちは。

これから年賀状の季節ということで、エクセルでリストを作成し、印刷にまでこぎつけたいと思うのですが、「(株)や(有)を除いた会社名順に並び替えたい」と考えております。
そこで、こちらのOkwebで検索したところ、下記のような式がアドバイスされていました。とてもありがたいです。

ただ、こちらをそのまま使わせていただいてもかまわないのですが、式に興味を持ち、自分で辞書をひいて調べたところ、構造が理解できませんでした。

そこで、どなたかこちらのエクセルの式を訳していただけないでしょうか。

=CONCATENATE(LEFT(PHONETIC(A2),FIND("(",PHONETIC(A2),1)-1),MID(PHONETIC(A2),FIND(")",PHONETIC(A2),1)+1,LEN(PHONETIC(A2))))

CONCATENATE関数で、LEFT関数・MID関数・LEN関数で出したものを結合する?
・LEFT(PHONETIC(A2),FIND("(",PHONETIC(A2),1)-1)
・MID(PHONETIC(A2),FIND(")",PHONETIC(A2),1)+1
・LEN(PHONETIC(A2)
このようにわけられるものでしょうか。

アドバイス、よろしくお願いします!

A 回答 (2件)

関数といっても、タダ単なる組み合わせにしかすぎません。



()を除く処理をしてますね。
まず、LEFT(PHONETIC(A2),FIND("(",PHONETIC(A2),1)-1)
最初にある ( までの内容を取り出す。

次にMID(PHONETIC(A2),FIND(")",PHONETIC(A2),1)+1,LEN(PHONETIC(A2)))

)から以降の内容を取りだす。
    • good
    • 0
この回答へのお礼

こんにちは。
アドバイスいただきましてありがとうございました。
やっと理解できました^^

お礼日時:2002/11/29 12:40

まず、式の中に出てくる



PHONETIC(A2)は、A2セルの振り仮名を取得する関数です。
文字が長いのでA$に置き換えます。

=CONCATENATE(LEFT(A$,FIND("(",A$,1)-1),MID(A$,FIND(")",A$,1)+1,LEN(A$)))

次に FIND("(",A$,1)はA$の1文字目から検索して、( を探し、文字の場所を数値で返します。
例 A$="(かぶ)○○商事"なら 1
  A$="△△商事(かぶ)"なら 5
長いのでB#に置き換えます
同様に FIND(")",A$,1)をC#に置き換えます

=CONCATENATE(LEFT(A$,B#-1),MID(A$,C#+1,LEN(A$)))
ここまで置き換えると分かると思いますが、
LEFT(A$,B#-1)  と  MID(A$,C#+1,LEN(A$))  を  CONCATENATE  で結合しています。

LEFT(A$,B#-1)はA$の文字列の左からB#-1文字目までを取り出し、

LEN(A$)はA$の文字の数を返す関数ですので、
MID(A$,C#+1,LEN(A$))はA$のC#+1から文字の最後までを取り出す。
(正確には MID(A$,C#+1,LEN(A$)-C#+1)だと思いますがLEN(A$)を指定すれば、残り全てを取り出すという事でしょう)

よってA1セルのふりがなの1文字目から(の1文字前までと、)の1文字後ろから最後までを取り出し結合するという事になります。

長い文になってよけい分かりにくかったらすみません。
    • good
    • 0
この回答へのお礼

こんにちは。
アドバイスありがとうございました。
また、お礼のお返事が遅くなってすみません。

置き換えての説明がとてもわかりやすかったです。
そういえば、昔数学の先生に教わっていたような
なつかしい感覚を覚えました^^

やっと理解できました。
ありがとうございましたm(_ _)m

お礼日時:2002/11/29 12:43

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