• ベストアンサー

このエクセルの複雑な関数を訳してください!

こんにちは。 これから年賀状の季節ということで、エクセルでリストを作成し、印刷にまでこぎつけたいと思うのですが、「(株)や(有)を除いた会社名順に並び替えたい」と考えております。 そこで、こちらの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) このようにわけられるものでしょうか。 アドバイス、よろしくお願いします!

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

  • ベストアンサー
回答No.2

まず、式の中に出てくる 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文字後ろから最後までを取り出し結合するという事になります。 長い文になってよけい分かりにくかったらすみません。

paochi
質問者

お礼

こんにちは。 アドバイスありがとうございました。 また、お礼のお返事が遅くなってすみません。 置き換えての説明がとてもわかりやすかったです。 そういえば、昔数学の先生に教わっていたような なつかしい感覚を覚えました^^ やっと理解できました。 ありがとうございましたm(_ _)m

その他の回答 (1)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

関数といっても、タダ単なる組み合わせにしかすぎません。 ()を除く処理をしてますね。 まず、LEFT(PHONETIC(A2),FIND("(",PHONETIC(A2),1)-1) 最初にある ( までの内容を取り出す。 次にMID(PHONETIC(A2),FIND(")",PHONETIC(A2),1)+1,LEN(PHONETIC(A2))) )から以降の内容を取りだす。

paochi
質問者

お礼

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

関連するQ&A