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

野菜の名前の最後にコード番号がついているデータがあり、この後ろについている数字を削除したいと思っています。
(コードの桁数は0~3桁で一定ではありません)

ネットを探していて以下のような関数を参考にやってみたのですが、

=LEFT(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&1234567890))-1)

コメやトマトなど無事削除できるものもあるのですが、ダイコンやヤツガシラ、カブ、キャベツなどが削除されません。
どうやらカタカナでかつ濁点や半濁点が混在しているものは総じてだめっぽい感じもします。

<参考>現在の結果
変換前       変換後
カブ1       カブ1
キャベツ1     キャベツ1
きゃべつ1     きゃべつ
ブロッコリー1   ブロッコリー1
ぶろっこりー1   ぶろっこりー
キュウリ1     キュウリ
きゅうり1     きゅうり
トマト1      トマト
コメ1       コメ
漬物1       漬物
間引1       間引
間引ダイコン1   間引ダイコン1
ダイコン1     ダイコン1
大根1       大根
だいこん1     だいこん


とりあえず自分のできることからと、
すべてをひらがなに一旦変えてから削除してカタカナに直すことも考えました。
でも、対象の商品数が多すぎて手作業ではとても・・・と挫折してしまいました。
(カタカナ→ひらがな変換関数とかあるのかな?)

なにかよいお知恵を拝借できればと思い、投稿させていただきました。
マクロはあまり理解できませんが、もしそれしかなければ
がんばりますのでよろしくお願いいたします

A 回答 (4件)

=JIS(LEFT(ASC(A1),FIND({1,2,3,4,5,6,7,8,9,0},ASC(A1)&"1234567890")-1))



FIND関数で半角文字を対象にしたため濁点が独立して1文字とカウントされることにより、LEFT関数の文字数と合わなくなったのがおかしい原因です。
    • good
    • 0
この回答へのお礼

ありがとうございます!
すばらしい。なるほど納得です。
そうか、カタカナをASCかけているから、濁点も一文字扱いになるのですね
確かに言われてみると、なるほどよく理解できました。
だからカタカナ濁音や半濁音の文字列のみ
ずれ込んでうまく削除されなかったのですね。

勉強になりました!

お礼日時:2006/08/11 16:45

=LEFT(A1,LEN(A1)-1)で強制的にセルA1の一番右側の


文字を消すことが出来ます。
Leaf(A1,n) は A1の文字列からn個を選択するという意味です
Lan(A1)はA1の文字数
よってA1の文字数をカウントして(例5文字)最後の文字を削除
して表示するという意味です。
    • good
    • 0
この回答へのお礼

回答ありがとうございました

野菜名の後ろにつくコードが例では1桁のみなのですが、
実際はないものから3桁まで可変なため、
リテラルでの1文字削除では結局うまく対応できないのです・・・

LENではなくもとのMINとFIXEDなどを組み合わせて
なんとかするとうまくいきそうな気はするのですが
どうしてだかカタカナでかつ濁音、半濁音がつくと
だとうまくいかないようです。

お礼日時:2006/08/11 16:29

=IF(AND(RIGHT(A1,1)>="0",RIGHT(A1,1)<="9"),LEFT(A1,LEN(A1)-1),A1)



これではどうでしょうか。

この回答への補足

ありがとうございます。
根性技でなんとか0~3桁対応にしてみたらできました!

=IF(AND(RIGHT(A1,3)>="100",RIGHT(A1,2)<="999"),LEFT(A1,LEN(A1)-3),IF(AND(RIGHT(A1,2)>="10",RIGHT(A1,2)<="99"),LEFT(A1,LEN(A1)-2),IF(AND(RIGHT(A1,1)>="0",RIGHT(A1,1)<="9"),LEFT(A1,LEN(A1)-1),A1)))

我ながらちょっとあんまりな気もしますが、とりあえず出来たはできた!ということで本当にありがとうございましたです!

でも、現在付与されている末尾のコードはこの先また変動する(4桁~ドンドン増えて行く)可能性があるので
桁数の変動に影響されない関数にならないだろうかとも
思ってみたり?
でもなんとかこれで無事お盆休みに入れそうです。

補足日時:2006/08/11 16:37
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速やってみました。
コードが1桁のものだと無事思ったように削除されました!
が、残念ながらコードがないものと1桁のものは
大丈夫なのですが、2桁~3桁あるコードのもの
うまくいきません。
でも、少し工夫するとできそうですね。
ちょっと考えてやってみます

お礼日時:2006/08/11 16:24

=LEFT(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&1234567890))-1)


にしたらいいのではないかと。
    • good
    • 0
この回答へのお礼

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

今回の質問はこの関数を使ってみたのですが、
濁音や半濁音のあるカタカナではできないという
ものでした。

もう少しがんばってみます

お礼日時:2006/08/11 16:26

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

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


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