• ベストアンサー

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

nishi6の回答

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

今は決算が終わり息抜き状態です。そろそろエンジンをかけ始める時期です。 後半部分を少し手を加えています。 最初に現れた最大値を残し、2つ目以降の最大値は消しています。 With Application myStr = .Substitute(myStr, maxNum, "@") '最大値を置き換える For pot = 1 To Len(myStr) If InStr("0123456789", Mid(myStr, pot, 1)) Then Mid(myStr, pot, 1) = " " End If Next '***追加*** If maxCot > 1 Then pot = InStr(myStr, "@") myStr = Left(myStr, pot) & .Substitute(Right(myStr, Len(myStr) - pot), "@", "") End If '******************** myStr = .Substitute(myStr, "@", maxNum) '最大値を元に戻す myStr = .Trim(myStr) '余分な空白を除去(ワークシート関数) End With .Offset(rw, 2) = myStr '*** 修正 *** コメント行にする 'If maxCot > 1 Then .Offset(rw, 3) = "最大値:" & maxCot & "個" ' rw = rw + 1 '次の行へ

kiroro302
質問者

お礼

nishi6さん、早々のご回答本当にありがとうございます。私のわがままなお願いを聞いてくださって恐縮です。早速会社で実行してみたのですが、希望とおりの処理が出来ました。これで業務がとても楽になります。本当にありがとうございました。nishi6さんがこれからお仕事が忙しくなられてしまうということで、あまりご相談に乗っていただけることは少なくなってしまいそうですね。今回の質問で、april21さんにもご回答頂いているのですが、私にとってはお二人とも先生のような親近感を抱いております。(こんなことはお二人にとってはご迷惑だとは思うのですが…)別件なのですが、前回nishi6さんに考えていただいたVBA(2つの表を統合するマクロ:TougouList)なんですが、sheet1,sheet2それぞれの表のA列はソートしておく必要がありますでしょうか?会社の同僚がA列がソートされていない表に対してTougouListマクロを実行した際、うまくいかなかったといっておりましたので、もしお分かりでしたら教えていただけますでしょうか?それそれのA列は「Excel_001」というようなデータが入っております。表によってはその部分がまったくソートされていないものがあります。でもそれはわざとソートしていないのです。業務上その順番がとても重要なのですが、そういうタイプの表に対してTougouListを実行してもうまく処理できますでしょうか?もしかしたら、同僚の操作が悪かったのかもしれません。ただ同僚はマクロを実行する前にそれぞれの表のA列をソートしてから実行したのですが、(その部分はうまく処理できるのですが、2つの表が統合された後にまたもとの順番に戻すことが出来ないといっておりました。)TougouListマクロは本当に私達にはなくてはならないものになっておりますので、さまざまなタイプの表に対応させることが出来ればと思いご質問させていただきました。この質問の場でお伺いするのは気がひけるのですが、折がありましたらお答え頂ければと思います。またまた厄介なことを申しまして申し訳ありませんが、どうぞよろしくお願いいたします。

関連する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関数が「偽」となったため、何も表示されず。 宜しくお願い致します。