• ベストアンサー

エクセルでセル内の任意の文字数を削除

皆さんこんにちは。 エクセルでセル内の右端から任意の文字数を削除 するにはどうすればいいのでしょうか? 例えば 幕の内弁当 28% いかめし 16% 栗めし 8% とある場合、右端のの28%、16%、8%を削除して 幕の内弁当 いかめし 栗めし と出したいのです。 RIGHTで3文字で出しても28%が出ますし LEFTではセル内の文字数が一定ではないので 出しにくいです。 よろしくお願いいたします。

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

  • ベストアンサー
  • JAPAN2004
  • ベストアンサー率28% (45/159)
回答No.1

LEN関数を使って、全体の文字数を把握します。 右の3文字を消したいので、 =MID(対象文字,1,LEN(対象文字)-3) でいかがでしょう。

snowflakes
質問者

お礼

JAPAN2004 さん 迅速、ご丁寧な 返答ありがとうございます! また、御礼が遅くなりまして済みませんでした。 MIDの使い方がとても勉強になりました。 #7でのLEFTでの解法も目から鱗の思いです! この方法で解決しました。 本当にありがとうございました。

その他の回答 (9)

回答No.10

はじめまして。 置き換えマクロはどうでしょう? ただ単純に、数値や”%”を無しに 置き換え作業してるだけです。 ----------------------------------------- Sub Macro1() Columns("A:A").Select Selection.Replace What:="0", Replacement:="" Selection.Replace What:="1", Replacement:="" Selection.Replace What:="2", Replacement:="" Selection.Replace What:="3", Replacement:="" Selection.Replace What:="4", Replacement:="" Selection.Replace What:="5", Replacement:="" Selection.Replace What:="6", Replacement:="" Selection.Replace What:="7", Replacement:="" Selection.Replace What:="8", Replacement:="" Selection.Replace What:="9", Replacement:="" Selection.Replace What:="%", Replacement:="" End Sub ----------------------------------------- A列すべてを選択してます。 どうでしょう?

snowflakes
質問者

お礼

missile_man さん 返答ありがとうございます! また、御礼が遅くなりまして済みませんでした。 置き換えマクロという方法があるのは知りませんでした。 本当に勉強になります! マクロのことは何もわからないのですが 置き換えマクロという解法を拝見していると簡潔で 有用なことが良くわかります。 使い方を習得すべくこれから少しずつ勉強していこうと思います!! 本当にありがとうございました。

noname#9284
noname#9284
回答No.9

スペースは文字とパーセンテージの間にしかない。 スペースは半角、または全角に統一してある。 のなら・・・ 範囲を選択し、Ctrlを押しながらHキーを押し、 置換ダイアログを出します。 置換する文字列→「 *」  全角(半角)スペースと半角アスタリスク 置換後の文字列→何も入れない ここでAltを押しながらAキーを押します。

snowflakes
質問者

お礼

hirorin2004 さん 返答ありがとうございます! また、御礼が遅くなりまして済みませんでした。 関数(?)を使わなくても解決できるのですね!! ずっとLEFT、RIGHTだけで悩んでおりました。 置換を使うのも考えたのですが結局解法がわからなかったのです。 非常に勉強になりました! 本当にありがとうございました。

  • at121
  • ベストアンサー率41% (85/206)
回答No.8

文字列の置き換えを使うと セルC5 から セルB4 へ出力として RIGHT(C5,3)= "28%" が得られるなら B4=SUBSTITUTE(C5,RIGHT(C5,3),"") とすると "幕の内弁当 28%" の "28%" を ""に置き換えるので  "幕の内弁当 " ブランクがいらないので B4=TRIM(SUBSTITUTE(C5,RIGHT(C5,3),""))  で  "幕の内弁当" これだと 一応 "空白8%"もカバー マクロで 空白区切り Function 商品名(セル) セル行列 = Split(セル, " ", , vbTextCompare) 商品名 = セル行列(0) End Function Function 比率(セル) セル行列 = Split(セル, " ", , vbTextCompare) If UBound(セル行列) = 1 Then 比率 = Val(セル行列(1)) Else 比率 = "-" End If End Function として B4=商品名(C5)

snowflakes
質問者

お礼

at121 さん 返答ありがとうございます! また、御礼が遅くなりまして済みませんでした。 SUBSTITUTE、TRIMなどの使い方を寡聞にして知りませんでした。 エクセルは初心者ですのでマクロもやったことありませんがこれから少しづつ勉強していこうと思います!! ご丁寧なレス本当にありがとうございました。 また質問があるときにもよろしくお願いいたします。

  • JAPAN2004
  • ベストアンサー率28% (45/159)
回答No.7

#1です。 >=MID(対象文字,1,LEN(対象文字)-3) これは =LEFT(対象文字,LEN(対象文字)-3) こっちのほうがすっきりしてますね。

snowflakes
質問者

お礼

JAPAN2004 さん 再度の返答ありがとうございます! また、御礼が遅くなりまして済みませんでした。 LEFTでの解法に大変感動いたしております! あれほど悩んだあの時間がうそのようです。 MID、LEFTの使い方が大変勉強になりました。 また質問があるときもよろしくお願いいたします。 本当にありがとうございました。

  • dial8675
  • ベストアンサー率26% (42/159)
回答No.6

例の場合をやります。%を目印の記号に使います x=find("%","幕の内弁当 28%") で%が何文字目に出てくるか調べます。これをxとします。 その後、 left("幕の内弁当 28%",x-3) で%から3文字前まで取得できます。 微妙に空白文字列を含みますが。 どうでしょうか?

snowflakes
質問者

お礼

dial8675 さん 返答ありがとうございます! また、御礼が遅くなりまして済みませんでした。 FINDの使い方は知りませんでした。 LEFTとの組み合わせで解決できるのですね! LEFTであれほど悩んでいたのにこんなにも 簡潔に解決できるとは・・・ 本当にありがとうございました。

noname#9268
noname#9268
回答No.5

項目とxx%の間に半角スペースが1つあることが 保証されている場合は以下のように出来ます。 =LEFT(A1,SEARCH(" ",A1)) SEARCH関数で空白が存在する位置を取得し、 そこまでをLEFT関数で取得します。

snowflakes
質問者

お礼

mao_mao さん とても的確で簡潔なアドバイスありがとうございます! また、御礼が遅くなりまして済みませんでした。 項目とxx%の間にスペースがあるのです。 LEFTとSEARCHを組み合わせると解決できるのですね! 「こういった使い方をするんだ」というお手本は 非常に勉強になります。 本当にありがとうございました。

  • zakikko
  • ベストアンサー率40% (173/423)
回答No.4

幕の内弁当 28% の「幕の内弁当」と「28%」の間にはスペースがはいっていますか? であれば、 [データ]-[区切り位置]-[カンマやタブで~]-区切り位置をスペースにすれば、項目とパーセンテージが分割できますので、パーセンテージの列を削除してしまえばOKでしょう。 スペースで区切られていない場合はわかりません。 ごめんなさい。

snowflakes
質問者

お礼

zakikko さん 返答ありがとうございます! また、御礼が遅くなりまして済みませんでした。 「幕の内弁当」と「28%」の間にスペースが入っているんです。 関数(?)を使わなくても解決できるのですね! 勉強になりました。 また質問があるときもよろしくお願いいたします。 本当にありがとうございました。

回答No.3

もし全ての品名と%表示の間に全角スペースが入っているのであれば、A1に品名が入っているとして、 =LEFT(A1,SEARCH(" ",A1)) では、いかがですか。

snowflakes
質問者

お礼

SAKURAMYLOVE さん 返答ありがとうございます! また、御礼が遅くなりまして済みませんでした。 LEFTとSEARCHを組み合わせれば解決できるのですか!! エクセルは初心者な者ですごく勉強になります。 本当にありがとうございました。

  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.2

FINDでメニューとパーセンテージ間のスペースの位置をまず抽出します。 その場合 =FIND(" ",A1) これで「幕の内弁当 28%」の場合「6」が帰ります。 後は、左から5文字分(6文字目はスペースなので)をLEFTで抽出します。 まとめると、こうなります。 =LEFT(A1,FIND(" ",A1)-1)

snowflakes
質問者

お礼

hirumin さん  返答ありがとうございます! また、御礼が遅くなりまして済みませんでした。 FINDの使い方をはじめて知りました。 組み合わせればLEFTでも解決できるのですね! 大変勉強になりました。 本当にありがとうございました。

関連するQ&A