アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル関数について教えてください。

セルAに入れた会社名に セルBにふりがなをつけたいので
セルBに 
=PHONETIC(A1)
といれます。
これで ちゃんとふりがながうたれるのですが
株式会社 太郎商事 
有限会社 花子興業
など 株式会社や有限会社には ふりがなをつけたくありません。
(並べ替えをしたい為)

何か良い方法はありますか?

A 回答 (6件)

=PHONETIC(A1)でカナを出した列を対象に、


カブシキガイシャなどの法人組織名を空白にすることをVBAでやれば
SUBSTITUTEなどの式が長くなることを、VBAのコード数が増えるに転化
出来ます。
例データ
A列    B列
株式会社 太郎商事カブシキガイシャ タロウショウジ
有限会社 花子興行ユウゲンガイシャ ハナココウギョウ
東京商事トウキョウショウジ
横花工業株式会社ヨコハナコウギョウカブシキガイシャ
ーー
F列に 削除するカナ名
カブシキガイシャ
ユウゲンガイシャ
キョウドウクミアイ
ーー
コード 標準モジュールに
Sub test01()
For i = 1 To 4
Cells(i, "B").Activate
For j = 1 To 3
Cells(i, "B") = Trim(Replace(Cells(i, "B"), Cells(j, "F"), ""))
Next j
Next i
結果
株式会社 太郎商事 タロウショウジ
有限会社 花子興行 ハナココウギョウ
東京商事 トウキョウショウジ
横花工業株式会社 ヨコハナコウギョウ
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
いろんな方から教えていただいて感謝です。

お礼日時:2009/12/03 13:01

No.1です。



> ちなみに 消す文字を増やそうと
> =TRIM(SUBSTITUTE(SUBSTITUTE(PHONETIC(A1),"カブシキガイシャ",""),"ユウゲンガイシャ",""),"カブシキカイシャ",""),"ユウゲンカイシャ",""))
> とすると多すぎる引数が入力されていますとエラーが出てしまします。
> 指定する文字に制限があるのでしょうか?

式を間違えているだけです。
消す文字毎にSUBSTITUTEが必要になります。

=TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(PHONETIC(A1),"カブシキガイシャ",""),"ユウゲンガイシャ",""),"カブシキカイシャ",""),"ユウゲンカイシャ",""))

セルに入力できる文字数にも制限はありますが、32767文字ですのであまり気にする必要は有りません
    • good
    • 0
この回答へのお礼

二度目の ご回答ありがとうございます。
なるほど、式が違うのですね。
理解いたしました。
この式で 作成します。
ありがとうございます。

お礼日時:2009/12/03 12:57

ちょっと長くなるけど、「株式会社 太郎商事」のように間に" "があるなら、


=IF(ISERROR(RIGHT(PHONETIC(A3),FIND(" ",PHONETIC(A3))-2)),PHONETIC(A3),RIGHT(PHONETIC(A3),FIND(" ",PHONETIC(A3))-2))
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
いろいろやり方があるようですね。
勉強になりました。

お礼日時:2009/12/03 12:53

No.2の補足です。


会社関係の読みは単に表示しなくていいんですね。勘違いしました。
B1には 
=IF(FIND("会社",CONCATENATE(A1,"会社"))<LEN(A1),"",PHONETIC(A1))

と入れてB2以下の行にコピーしてください。
    • good
    • 0

FINDなど文字列検索を使いたいのですが、該当する文字列"会社"がない場合エラーになり処理が続きません。


そこで妙案。わざと最後に"会社"をくっつけてしまうのです。これでエラーにはなりません。検出した文字列の位置と文字列の長さを比べれば、元の文字列に"会社"があったかどうか分かりますね。
これを式にすると以下のようになります。
B1には 
=IF(FIND("会社",CONCATENATE(A1,"会社"))<LEN(A1),A1,PHONETIC(A1))
と入れてB2以下の行にコピーしてください。
添付の図が実行結果です。
「エクセル関数 PHONETICについて」の回答画像2
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
記載されている数式でやってみたのですが
エラーが出てしまいます、。
(A1)をすべて該当するセルに変えましたが。

No.1の方の方法で とりあえず上手くいきました。
ありがとうございました。

お礼日時:2009/12/03 12:52

表示したくない対象が少ないのなら、こんな感じでSUBSTITUTEを使って消してしまっては?TRIMは、「株式会社」と社名の間にスペースが入っている場合を考慮して付けました。



=TRIM(SUBSTITUTE(SUBSTITUTE(PHONETIC(A1),"カブシキガイシャ",""),"ユウゲンガイシャ",""))
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

できました!!
こんなことできないよねって思ってても 結構
できるものですね。
ありがとうございます。

ちなみに 消す文字を増やそうと
=TRIM(SUBSTITUTE(SUBSTITUTE(PHONETIC(A1),"カブシキガイシャ",""),"ユウゲンガイシャ",""),"カブシキカイシャ",""),"ユウゲンカイシャ",""))
とすると多すぎる引数が入力されていますとエラーが出てしまします。
指定する文字に制限があるのでしょうか?
もしわかればお願いします。

お礼日時:2009/12/02 16:14

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