• ベストアンサー

Excel関数について

WindowsXPのExcel2003を使用しています。 あるデータ(文字列)の先頭の空白を削除して、 文字列を再取得したいのですが、うまくいきません。 例えば、 「 test これはテストです。」 という文字列を 「test これはテストです。」 という風に、頭のスペースのみ削除したいです。 何かいい方法はありますでしょうか? ちなみに文字列は決まっていません。 find関数等で、"スペース以外の最初の文字位置"などが取得できるといいと思っているのですが。。。 よろしくお願いします。

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

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

ちょっといい加減なんですが、 =MID(A1,SEARCH(LEFT(TRIM(A1),1),A1),LEN(A1)) はどうでしょうか? =SEARCH(LEFT(TRIM(A1),1),A1) で、空白を除いた最初の文字が元の文字列の何番目かはわかるんですが、midで何文字目から最後までというのは無かったでしたっけ?

olive_surf
質問者

お礼

ご回答ありがとうございます。 > =SEARCH(LEFT(TRIM(A1),1),A1) これありがとございます。 あとは力技で。。。↓ =MID(A1,SEARCH(LEFT(TRIM(A1),1),A1),LEN(A1)-SEARCH(LEFT(TRIM(A1),1),A1)+1) 解決できました。 皆さん、いろいろなご意見ありがとうございました。

その他の回答 (5)

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.5

VBAも使用不可ですか? VBAを使えば、一発なんですけどね [出力セル]=LTrim([検索セル]) これだけで左のスペースを削除 ではワークシート関数で =IF(LEFT(F30,3)="   ",RIGHT(F30,LEN(F30)-3),IF(LEFT(F30,2)="  ",RIGHT(F30,LEN(F30)-2),IF(LEFT(F30,1)=" ",RIGHT(F30,LEN(F30)-1)))) くっ 長ぇ 途中でめんどくさくなったので、3個まででご容赦を^^; 全半角はたしか検索などの設定で、認識不認識が選べたハズです デフォルトで認識しない(A=a 全角A=半角小文字a)だったと思います ダメならスペースを半角にしてみてください 投稿時に連続した半角スペースが1個にされてしまうので、全角です あとはパターンにしたがって増やせば幾らでも と言いたいところですが、確か長すぎるのは出来ない(文字数か複雑すぎるのがダメのかは失念)ので、その場合は… 次の人どうぞ

olive_surf
質問者

お礼

ご回答ありがとうございます。 文字列の個数が限定されていれば、仰るとおり力技でできるのでしょうが。。。

olive_surf
質問者

補足

あ、すいません。忘れてました。 VBAではなく、関数っていうところが面倒くさいところで。。。(苦笑)

noname#79209
noname#79209
回答No.4

以下のような「正規表現による検索・置換」アドインを使って 検索文字列:「^[\s ]+」...行頭にある半角と全角のスペースの連続を表します。 置換文字列:「」...........なにも指定しない(つまり削除) とすれば行頭にある半角と全角のスペースを削除できます。 行頭にスペースが連続(半角、全角が混在しても)していても削除可能です。 http://srcedit.pekori.jp/tool/excelre.html インストール方法や使用法は、解凍して得られるテキストファイルを参照してください ダイアログの表示は「CTRL+R」です。 ご参考まで...

olive_surf
質問者

お礼

ご回答ありがとうございます。 標準でできる必要がありますので、アドイン等は使えないのです。 情報ありがとうございました。

  • dai_1376
  • ベストアンサー率27% (14/51)
回答No.3

では、 =TRIM(対象セル) はどうですか? (□■はスペースです) □□□あああ■□□あああ 上のようなセルの場合、□はこの関数で消えます。 途中の■は残ります(途中にあるものは1つを残して消えます。)。

olive_surf
質問者

お礼

ご回答ありがとうございます。 いい感じで文字列処理ができましたが、できれば先頭のスペース以外は残したいのです。 他によい方法ってありますでしょうか? □□□あああ■■■あああ このように■を残したいです。。。

回答No.2

olive_surfさん、こんにちは。 =TRIM(文字列)を使ってみては、いかがでしょうか。 文字列に複数のスペースが連続して含まれている場合、単語間のスペースを 1 つずつ残して、不要なスペースをすべて削除します。TRIM 関数は、ほかのアプリケーションから読み込んだテキストに不要なスペースが含まれているときなどに使用します。(Excelのヘルプより)

olive_surf
質問者

お礼

ご回答ありがとうございます。 いい感じで文字列処理ができましたが、できれば先頭のスペース以外は残したいのです。 でもこの辺がExcel関数の限界でしょうか。。。

  • dai_1376
  • ベストアンサー率27% (14/51)
回答No.1

MID関数はいかがでしょうか? =MID(対象セル,何文字目から,何文字分) という関数です。 最後の何文字分のところは、決まりがなければ大きな数字を 入れてしまえば取り逃しが無いと思います。

olive_surf
質問者

お礼

ご回答ありがとうございます。 > =MID(対象セル,何文字目から,何文字分) という関数です。 すいません。説明不足でしたが、頭にくる空白の文字数はランダムなのです。 なので、"何文字目から"というのがわからないのです。 他に何かよい方法はありますでしょうか?

関連するQ&A

  • エクセルでスペースのみが入ったセルを除いてCOUNTA関数を使うには?

    自分で作成したシートではないのでよくわからないのですが、データが無いセルにスペースキーで空白が入っているようです。 ある列のデータ(0001とか0028とかの頭が0の文字列の数字)の数を取得しようとしたのですがスペースのセルまで集計されてしまいます。 しかたなく空白を置換えで削除すると、0001は1に化けてしまいます。 スペースを入れないデータを下さいと頼んだのですが、ホストコンピュータから何かのソフトでエクスポートしたエクセルファイルらしく、そういう操作は出来ないと断られてしまいました。 頻繁にあることなのでスペースを削除せず、且つスペース以外の空白でないセル数を取得するにはどのような関数を用いればよいのでしょうか?

  • EXCELで文字列内のスペースの抽出

    EXCEL2000を使用しています。 A列に文字列が300行ほど入力されています。 ある条件で、各文字列の先頭にスペース(空白)が0個~3個ついています。 いま、文字列の先頭にあるスペースの数をB列に表示させたいのですが、 どのような関数を使えば良いでしょうか。 ご存じの方、ご教授下さい。

  • InstrB関数について(VBA)

    ExcelVBAなのですが、 InstrB関数で、文字位置のバイト数を取得したいと考えています。 1.文字列[A BCDE] ・・・AとBの間に、半角空白が2つあります。  ※OKWaveに登録すると半角が1つになってしまうようですが、実際は2つです。 2.文字列[A BCDE] ・・・AとBの間に、全角空白が1つあります。 この文字列に対し、Bの位置は、半角空白2つであっても全角空白1つであっても同じ結果であって欲しかったのですが、 1.の場合:7、2.の場合:5 と結果が返ってきました。 ※実際には、文字列から、   ある記号の次の文字からある記号の前までの文字  を取り出したいため、その記号の位置を知りたいための処理です。 ヘルプには、 InStrB 関数は検索結果をバイト位置 (先頭からその位置までのバイト数) で返します とあったので、同じだと思ったのですが・・・ この違いは、なぜ発生するのでしょうか? ご指導、よろしくお願いします!

  • VBAで使えないワークシート関数は

    エクセルVBAで、ワークシート関数を使う場合に、findやmatchなどの検索関数が使えないのですが、何か別の関数が用意されているのでしょうか? やりたいことは、セルの中の文字列を、区切りのスペース文字で分解したいのですが。区切り文字の位置を知るfindが使えません。

  • 【Excel2003】指定した行を省いて列を再構成する方法【関数】

    Excel2003にて以下の内容を関数で実現する方法がありましたら ご教示願います。 1列に0とそれ以外(数字or文字列)の羅列があり それを別の列に、0の行を削除し、その分上につめて 列を再構築する関数はありますでしょうか。 (0は空白のセルにすることも可能です) (例) 100 0 105 0 0 AAA ↓ 100 105 AAA よろしくお願いいたします。

  • 【EXCEL関数】教えてください!!

    EXCEL関数について質問です。 1.A列に記入されている文字列の中にあるのに、 2.B列に記入されている文字列の中にないものを 3.C列に抽出 したいのですが、なにか良いEXCEL関数はありますでしょうか。 宜しくお願い致します。

  • IF関数で結果が♯VARUE!のとき...

    EXCEL2000で、IF関数を使用しています。 条件式で,結果が♯VARUE!の時は、正を返したいのですが、うまくいきません。 教えて下さい。 実際に組んでいる式です。 =IF(FIND(" ",I6)=0,LEFT(I6,LEN(I6)),LEFT(I6,FIND(" ",I6,1)-1)) スペースがあればスペース前の文字列を返し、スペースがなければ全文字返すという式を組んでいます。 スペースがなければということで、FINDが0ならとしたのですが、上手くいかないため、エラーならば、という条件に変えようとしている次第です。 宜しくお願い致します。

  • EXCEL関数 数値セルが何個下に出てくるか?

    EXCEL関数で質問です。 A1:A5セルそれぞれに、文字列、空白、数値のいずれかが入っています。 そのうち数値のセルが最初に出てくるのは上から何番目か、というのを B1セルに関数で表示したいのです。 たとえば、A列上から、 あ、A、100、100、0 なら3、 愛、(空白)、百、8、ZZZ なら4 という具合です。 お知恵をお貸しください!

  • VBA/FIND関数を使っての先頭文字列の検索方法

    エクセルVBAにてFIND関数を使って、 文字列検索⇒コピー&ペーストのマクロを作成しているのですが、 どうしても、先頭文字列から検索をする方法がわかりません。 たとえば、 あいうえお いうえおあ おあいうえ えおあいう という文字列から「あいう*」を検索したい場合、 1行目だけを抽出したいのですが、 1,3,4行目が抽出されてしまいます。 find関数では先頭文字からの検索はできないのでしょうか? もし、不可能な場合、先頭文字からの検索を行うにはどのように行えばよいでしょうか? アドバイス、よろしくお願いいたします。

  • Excel関数

    Excel関数を使って下のような表示をさせたいです。 A列:場所、 B列:品名 C列:関数(A列に該当するB列の品名の略称を表示させる)   ※下の表は頭文字を結合したものを表示 C列にはどのような関数をくめばいいでしょうか。 ご教授お願いします。  | A     B     C ーーーーーーーーーーーーーーーー 1|福岡   りんご   りばな 2|京都   ぶどう   ぶ 3|福岡   ばなな   りばな 4|東京   なし    なぶ 5|東京   ぶどう   なぶ 6|福岡   なし    りばな