• ベストアンサー

セル内の文字列操作について

april21の回答

  • april21
  • ベストアンサー率42% (91/216)
回答No.7

>Excelのセルに値を入れるということは内部では変数に値を入れているということになるのでしょうか? データを入れておく箱のような物が変数ですからセルもそうでしょうね。 VBAがまったくわからないのであれば標準の関数を使って作ってみたほうが良いと 思いますよ。 そうするとどんな関数があるとかがわかってきますし処理させる手順がはっきりしてきますから。 手順がわかればVBAで記述する事も出来るはずです。 今回の処理を例にすると 文字データと数値データが混在するから処理できないわけですよね? だから、どうしたら文字データと数値データを分ける事が出来るかを考える。 ■SEARCH関数で空白が入ってる位置を調べてMID関数で抜き出して5つのセルに分ける。(または「データ」-「区切り位置」で分ける) 分けた文字列を1つのセルにする ■セルは&で繋がる。(=A1&B1&C1&D1&E1) でも、このまま繋いでしまったら元のまま。 文字データと最大値のみの表示にするという条件が付いてますから 文字データを調べるにはTYPE関数、最大値はLARGE関数 IF(OR(TYPE(A1)=2,A1=LARGE(A1:E1,1))=TRUE,A1,"")&IF(OR(TYPE(B1)=2,B1=LARGE(A1:E1,1))=TRUE,B1,"")・・・こんな感じでA1~E1まで。 元データがいくつもある ■数式のセルをクリックして右下が+に変わったらドラッグ。 ものすごぉ~くセルが長くなってしまいますが結果は得られますね? セル内に文字が増えてもEまでだったのをFGHIと増やしていけば良いだけですし 数式が長くて書けないのであればOR(TYPE(A1)=2,A1=LARGE(A1:E1,1)の値を別の セルにいれれば短くなるし・・・。 セルは沢山必要だし同じ事をいっぱい入力しないといけないけど・・出来ますよね。 ここまで出来ればどんな関数を使えば良いかもどんな処理をすれば良いかもわかるのでVBAの記述方法を少し覚えれば簡単に出来ると思います。 ヘルプ、本を読んだりしてる時に「あ、この部分はVBAに替えられる」という のがわかってくるはずです。 >よく何かひとつの言語をマスターされた方は他の言語も比較的早くマスターすることが出来ると聞いております。 言語がわかるとかわからないとかでなくどういう処理手順をさせたいかって事がわかってれば良いのだと思います。 誰かにお願いしても手順を説明しなくては思ったような結果は得られません。

kiroro302
質問者

お礼

april21さん、私の些細なたわごとにご丁寧にお答え下さり、本当にありがとうございます。実は私は大変プログラミングに興味を持つようになりました。(april21さんやnishi6さんのようにパソコンに自在に処理させてみたいなぁとゆめをみています。)少しずつ時間を見つけてはプログラミングの本を読んだりしています。やはりいきなりC言語やJavaは難しいと思いますので、自分が普段使用しているソフトの中で少しでもプログラミングに触れることができるVBAから挑戦してみようかな、と言う気持ちでいるのす。april21さんがおっしゃられていた処理の手順と言うのはアルゴリズムということでしょうか?確かにコンピュータにどういう処理をさせたいのかその手順を記述することがプログラミングですよね。その手順をどういう風に書くのか分かれば、言語は何だっていいのですよね。同じ結果は得られるのだと思います。今回のapril21さんのご回答で、私はまた目覚めてしまいました。本当にVBAを頑張って修得したいと思います。やってみないと分かりませんが、こういうことを考えることは結構性に合っているかな?と思っていたりもしています。これからもExcelのことではたくさんご相談してしまうと思いますが、どうぞ嫌気を指さずにお力をお貸しくださいませ。今回は貴重なご指標をありがとうございました。

関連するQ&A

  • セル内の文字列に複雑な処理をしたい

    セルの中の複数の異なる文字列を以下のように処理したいのですが、Excelの標準の文字列操作の関数で試行錯誤してみたのですが、どうもうまくできませんでしたので、ご存知の方がいらっしゃいましたらご教授ください。VBAで処理しないとできないかもしれませんがよろしくお願いします。 あるリストのC列に備考欄が設けてあり、次のようなデータが入っています。 4/30 みかんを買った(強制改行して) 5/1 りんごを売った 5/2 ぶどうを食べた 5/5 すいかを買った このセルを調べて、 (1) セル内に"みかん"と"りんご"という文字列があったら、これを取り出して、右隣のセルに表示           (結果)⇒ みかん りんご (2) セル内に"みかん"と"りんご"という文字列があったら、これを"A","B"に置き換えて、右隣のセルに表示          (結果)⇒ A B (3) セル内の数値データと"を食べた"、"を買った"、"を売った"を取り除いて、右隣のセルに表示          (結果) ⇒ みかん りんご ぶどう すいか   (4) セル内に"か"を含む文字列があったら個数に関係なく"A"に置換して右隣のセルに表示             (結果) ⇒ A   すべて取り出したい文字列(上の例ではみかん、りんご)や置換したい文字列(A、B)以外の文字列は全てクリアして表示しないようにします。少し複雑ですが、やり方をご存知の方がいらっしゃいましたら、お教えください。

  • エクセルで文字列の個数を数える

    ある範囲のエクセルデータから決まった文字列の個数をカウントする関数の使い方が判れば教えてください。 例えば、A1からH200までのデータより、”リンゴ”という文字列が何個あるかカウントしたいのですが。 COUNTIF(A1:H200,"*リンゴ*")とすると”リンゴ”という文字列が含まれるセルの個数は出たのですが、”リンゴ”という文字列が複数含まれるセルもあるので、”リンゴ”という文字列の個数とは 一致しないようなのです。 どなたか、よろしくお願いします。

  • 空白セルで区切られた文字列の種類を求める関数

    以下の条件を満たす excel関数がありましたら 教えてください。    A       B 1 りんご 2 みかん 3 りんご 4 なし 5 なし      3 ← 結果 6 7 なし 8 りんご 9 りんご     2 ← 結果 10 上記のようにA1からA10のセルに 文字列と空白が入っているとき、 空白で区切られたグループ内で、 文字列の種類が一体何種類になるのかを、 数えたいと思います。 ちなみに、関数はB列に入力したいのですが、 空白の一つ上のセルにだけ結果がでるように 表示させたいです。 説明不足でしたら申し訳ありません。 よろしくお願いいたします。

  • 「&」を使い他のセルから引用した文字列を複写したい

    はじめまして。 既出かも知れませんがエクセルについての質問です。 次のようなことが出来る関数はあるのでしょうか。 例えばA1,A2のセルに A1 ="これは、"&A2&"です。" A2 りんご と入力すると、 A1には 「これは、りんごです。」 と表示されると思います。 このとき、A1に表示された 文字列を表示されたままの 「これはりんごです。」を ほかのセル(例えばA3)に、文字列として貼り付けることができるでしょうか。 (A3に =A1 ということではありません。) 言い換えると A1に表示された、「これはりんごです。」を ワード等に、コピーできるかというような内容です。 分かりづらい文章で申し訳ありません。 また、調べが足りないとも考えておりますが、 よろしくお願いします。

  • エクセル関数の文字列操作で困ったことが

    競馬のオッズデータの取り込みを行っていますが、外部データをエクセルのシート(sheet2)に取り込んだ際、決まった場所に単勝と複勝のオッズデータが入っているのですが、(000022000336・・・のように6バイトを1頭分のオッズとして表示:上の例では馬番(1)のオッズが2.2倍、馬番(2)のオッズが33.6倍というように)17頭までは文字列でずらーっと表示されるのになぜか18頭のときだけ1.17E+105などというような表示になってしまいます。 このオッズデータからMID関数で6文字ずつ分割してそれぞれの馬番のセルに貼り付けていたので18頭の時はエラーになってしまいます。参考書はVBAでプログラムを組んでオッズの取り込みからセルへの貼り付けまでスムーズに行えているようですが、私がやってもVBAでうまくいかないためやむを得ずエクセル関数で処理した次第です。 この問題うまく解決できますか?

  • ExcelでCVSファイルの文字列を変換。

    初めまして。 CVSを開くとデータは「123」と表示されるのですが、メモ帳などからCVSファイルを開くと「0123」と文字列になってます。 EXCELファイル上で開くと「123」と数値になってしまって困ってます。これを、「0123」と文字列にしたいのですがどうしたらいいですか?? EXCELでA列を「0123」、「025」と番号を文字列に表示してB列に名前、C列には数値にしたのですがどう処理すればいいかわかりません。。。。 EXCEL VBAで処理するしかないのですか?? プログラムにはあまり自信がないです。。。 もし、EXCEL VBAで処理する方法があるなら参考などを教えてくれませんか?? よろしくお願いします。

  • Excelの「’」とセルの書式設定(文字列)の違い

    こんばんわ。 Excelの文字列表示について、教えてください。 数字を入力する際に、先頭に「'」を入力すると 文字列として入力することが出来ますが、 数字が入っているセルのセルの書式設定から 「文字列」に表示形式を変更することとの 違いはなんなんでしょうか? やり方は違うけれど、結果は同じということでしょうか? 「'」を入力すると、データが文字そのものに変わり、 表示形式を変更すると、見た目だけ(左揃えになるなど) 文字列のように見えるだけで、データは 数字のままということなんでしょうか?? また、文字列として入力された数字を Value関数で数値に変換してしまうのと セルの書式設定で「数値」に変更するというものも 同じように、違いが良く分かりません。。。 もう、頭の中が「??」だらけです。 違いを教えていただけたら・・・と思います。 どうぞよろしくお願いいたします<m(__)m>

  • 別のセルに定型の文字列を表示させたい

    別のセルに定型の文字列を表示させたい 例えば、 A1に数値を入力すると、 B1に、かならず「りんご」という文字列を表示させたいのですが、 いろいろやってみた結果どうもうまくいきません。 お知恵を拝借させてください。

  • エクセル セルの表示形式「文字列」だけを抽出したい

    エクセル2007を使用しています。 A列に数字が入力されていますが、そのセルの表示形式は、「標準」「数値」「文字列」とバラバラです。 この「文字列」のセルだけを抽出したいのです。 例えば、関数などを利用して、B列に表示するなど。 よろしくお願いします。

  • Excel:セル枠外にはみ出た文字列全体の表示

    お世話になります。WindowsXPでExcel2002を使用しております。是非教えてください。 Excelで入力した文字列がセルの横幅を越えた長さとなった場合、右隣のセルが未入力であれば、自動的に全体が表示されるようになっています。 しかし、右隣のセルに、例えば関数を入力していた場合など何らかのデータを入力していた場合には、枠内までの文字しか表示されなくなります。 右隣のセルが、関数計算の結果、何らかの数値、文字列が表示される場合には致し方ないと思いますが、特に何も表示されない時、左隣のセルの文字列全体が表示されるようにしたいのですが、何らかの方法はございますでしょうか。 ちなみに、具体的な状況については以下の通りです。  |A|B| 1| | | ・A1、B1セルにはそれぞれ同じIF関数(=IF([論理式],A21,""))を入力。 ・A1セルのIF関数が「真」となったため、A21の文字列("浜崎総務部長の来訪")が表示される。 ・B1セルのIF関数が「偽」となったため、何も表示されず。 宜しくお願い致します。