• ベストアンサー

セル内に複数の単語。一定文字数を超えた単語を検出

一つのセル内の複数の単語は、半角空白で区切られていて、数は1~4つでバラついています。 セルの中の単語で、一定文字数を超え単語を含むセルを検出し、セルに色を付けたいのです。 そのセルは、縦一列に並んでいるので、列内で検索、検出したいのです。 このようなマクロを教えて下さい。 セル内の単語が一つであれば、他にも方法はあるみたいですが、複数なので困っています。 お願い致します。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>その列の行数は約4000ですが、数十ほど増減しますので、列の範囲を広めに設定しておけばよろしいですょうか?  はい、列数ではなく、行数を広めに設定して下さい。 >範囲なしで、列まるごと指定できるならそうしたいと思います。  一応、可能ではありますが、そうしてしまいますと、ファイルのデータ量が無駄に多くなりますので、出来れば手頃な行数にのみ、条件付き書式を設定される事を御勧め致します。 >バージョンは2003ですが、作成後に2007で開くこともあります。 >列はB列で、B2~B4000の範囲です。 >文字数は、半角アルファベットで14字以上です。  回答No.1の方法を参考に、実際の状況に合わせて応用する方法を、質問者様は既に御解りになられている御様子ですが、念の為に、その方法に関して以下に記述致しておきます。  尚、 >その列の行数は約4000ですが、数十ほど増減しますので、 との事ですので、下記の方法では条件付き書式を設定する範囲を、余裕を持たせてB2~B4200としております。 B2セルを選択   ↓ メニューの[書式]をクリック   ↓ 現れた選択肢の中にある[条件付き書式]をクリック   ↓ 現れた「条件付き書式の設定」ダイアログボックスの左端の欄をクリック   ↓ 現れた選択肢の中にある「数式が」をクリック   ↓ 「条件付き書式の設定」ダイアログボックスの左から2番目の欄に次の数式を入力 =SUMPRODUCT((FIND(CHAR(1),SUBSTITUTE(B2&" "," ",CHAR(1),ROW(INDIRECT("Z1:Z"&LEN(B2)-LEN(SUBSTITUTE(B2," ",))+1))))-FIND(CHAR(1),SUBSTITUTE(" "&B2," ",CHAR(1),ROW(INDIRECT("Z1:Z"&LEN(B2)-LEN(SUBSTITUTE(B2," ",))+1))))>13)*1)   ↓ 「条件付き書式の設定」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[パターン]タブをクリック   ↓ 現れた[色]欄をクリック   ↓ 現れた色のサンプルの中から、セルを塗りつぶしたい色の四角形を選択してクリック   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「条件付き書式の設定」ダイアログボックスの[OK]ボタンをクリック   ↓ B2セルを右クリック   ↓ 現れた選択肢の中にある[コピー]をクリック   ↓ B3~B4200のセル範囲をまとめて範囲選択 (この様に、選択範囲が広い場合には、名前ボックスに b3:b4200 等と入力してから[Enter]キーを押すと、手早く選択する事が出来ます)   ↓ 選択範囲を示す黒い太枠の内側にカーソルを合わせて、マウスを右クリック   ↓ 現れた選択肢の中にある[形式を選択して貼り付け]をクリック   ↓ 現れた「形式を選択して貼り付け」ダイアログボックスの中にある「書式」と記されている箇所をクリックして、チェックを入れる   ↓ 「形式を選択して貼り付け」ダイアログボックスの[OK]ボタンをクリック  尚、データが入力されている行数が増えて、4200行でも行数が心もとなくなって来た場合には、B2~B4200のセル範囲内の適当なセル1つをコピーしてから、新たに条件付き書式を設定したいセル範囲に、[形式を選択して貼り付け]機能を使用して書式のみを貼り付けて下さい。

その他の回答 (1)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 マクロなど使わずとも、条件付き書式だけでも可能です。  質問者様が御使いになられているExcelのバージョンが不明ですので、取り敢えずはExcel2007よりも前のバージョンと、Excel2007以降のバージョンの両方の場合における設定方法を記載させて頂きます。  又、質問者様の仰る「そのセル」とは、何行目から何行目の範囲のセルであるのかも不明ですし、質問者様の仰る「列内」も何列の事なのかが不明ですので、ここでは仮に、A1~A99のセル範囲内のセルの中で、6文字以上の単語を含むセルのみに色を付けるものとします。 【Excel2007以降のバージョンの場合】 Excelウインドウの[ホーム]タブをクリック   ↓ A1セルを選択   ↓ 「スタイル」グループの中にある[条件付き書式]ボタンをクリック   ↓ 現れた選択肢の中にある[ルールの管理]をクリック   ↓ 現れた「条件付き書式ルールの管理」ダイアログボックスの中にある[新規ルール]ボタンをクリック   ↓ 現れた「新しい書式ルール」ダイアログボックスの[数式を使用して、書式設定するセルを決定]をクリック   ↓ 「次の数式を満たす場合に値を書式設定」と記されている欄に次の数式を入力 =SUMPRODUCT((FIND(CHAR(1),SUBSTITUTE(A1&" "," ",CHAR(1),ROW(INDIRECT("Z1:Z"&LEN(A1)-LEN(SUBSTITUTE(A1," ",))+1))))-FIND(CHAR(1),SUBSTITUTE(" "&A1," ",CHAR(1),ROW(INDIRECT("Z1:Z"&LEN(A1)-LEN(SUBSTITUTE(A1," ",))+1))))>5)*1)   ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[塗りつぶし]タブをクリック   ↓ 現れた[色]欄をクリック   ↓ 現れた色のサンプルの中から、セルを塗りつぶしたい色の四角形を選択してクリック   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの中にある「ルール(表示順で適用)」欄が「数式:=SUMPRO..」となっている行の「適用先」欄をクリック   ↓ A1~A99のセル範囲をまとめて範囲選択   ↓ 「条件付き書式ルールの管理」ダイアログボックスの中にある[適用]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの中にある[OK]ボタンをクリック 【Excel2007よりも前のバージョンの場合】 A1セルを選択   ↓ メニューの[書式]をクリック   ↓ 現れた選択肢の中にある[条件付き書式]をクリック   ↓ 現れた「条件付き書式の設定」ダイアログボックスの左端の欄をクリック   ↓ 現れた選択肢の中にある「数式が」をクリック   ↓ 「条件付き書式の設定」ダイアログボックスの左から2番目の欄に次の数式を入力 =SUMPRODUCT((FIND(CHAR(1),SUBSTITUTE(A1&" "," ",CHAR(1),ROW(INDIRECT("Z1:Z"&LEN(A1)-LEN(SUBSTITUTE(A1," ",))+1))))-FIND(CHAR(1),SUBSTITUTE(" "&A1," ",CHAR(1),ROW(INDIRECT("Z1:Z"&LEN(A1)-LEN(SUBSTITUTE(A1," ",))+1))))>5)*1)   ↓ 「条件付き書式の設定」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[パターン]タブをクリック   ↓ 現れた[色]欄をクリック   ↓ 現れた色のサンプルの中から、セルを塗りつぶしたい色の四角形を選択してクリック   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「条件付き書式の設定」ダイアログボックスの[OK]ボタンをクリック   ↓ A1セルを右クリック   ↓ 現れた選択肢の中にある[コピー]をクリック   ↓ A1~A99のセル範囲をまとめて範囲選択   ↓ 選択範囲を示す黒い太枠の内側にカーソルを合わせて、マウスを右クリック   ↓ 現れた選択肢の中にある[形式を選択して貼り付け]をクリック   ↓ 現れた「形式を選択して貼り付け」ダイアログボックスの中にある「書式」と記されている箇所をクリックして、チェックを入れる   ↓ 「形式を選択して貼り付け」ダイアログボックスの[OK]ボタンをクリック

ricercar6
質問者

補足

早速ありがとうございます。 バージョンは2003ですが、作成後に2007で開くこともあります。 列はB列で、B2~B4000の範囲です。 文字数は、半角アルファベットで14字以上です。 その列の行数は約4000ですが、数十ほど増減しますので、列の範囲を広めに設定しておけばよろしいですょうか? 範囲なしで、列まるごと指定できるならそうしたいと思います。 出先からですので、取り急ぎ補足説明とお礼まで。 実際に動作確認できましたら、改めて報告させて頂きます。 ありがとうございました。

関連するQ&A

  • エクセルで文字列が混入しているセルを検出するマクロ

    本来、数字しか入力しないことになっているエクセルのある範囲内に、文字列が混入していないかを検出するマクロを教えて下さい。文字列は手作業で修正するので、文字列が混入しているセルを赤色に変えて示してくれるようなマクロを探しています。宜しくお願いします。

  • セル中の文字チェック

    教えて下さい。 マクロ初心者です。 あるセルに入力させたくない文字が複数あります。 (たとえば、半角の / や * などです。) 入力者がそのセルに入力している時、/が入力できない!というのがベストかと思うのですが、入力された後にセル中の文字列をチェックしエラーメッセージを表示出来れば大助かりです。 マクロ、関数どちらでも結構ですので対応方法を教えて下さい。よろしくお願いします。

  • 文字数と単語数を数えるプログラム

    When in Rome, do as the Romans do. をchar形配列に格納し、文字列に含まれる(空白以外の)文字数と単語数を数え、結果を画面に出力するプログラムがうまくできません。文字数と単語数の数え方がさっぱり… アドバイスしていただけると幸いです。よろしくお願いします

  • エクセルの1セルの最大文字数はいくつ?

    エクセルの関数、TRIM、JIS、ASC等を実行したら、#VALUE!が出てしまいました。 文字列(かなり長い)をTRIMで空白を削除し、JISかASCで全角、半角を統一しようと試みました。 上手くいきそうな感じでしたが、その中の4セルに【#VALUE!】と表示されました。 大部分はその処理が正しく実行されているのに、その4つのセルは何故、どうして?? そのセルを調べたところ、そこにはかなり長い文章(文字数)が入力されていたので、半分くらいカットして再実行してみたら、今度は正しく処理されました。 1セルに入っている文章(文字数)が多すぎたのでしょうか?  1セルには何文字(バイト)が許容されるのか、また、1セルで何文字(バイト)以上の場合は、関数は使用できない(通用しない)などの決まりはあるのでしょうか? 今回の場合は、24件で列も30列ぐらいでしたので、【#VALUE!】のエラーも気が付きましたが、これが何百件、数百列となると、エラーに気が付かないかもしれません。(気が付きにくくなります。) 1セルに入力できるおおよその文字数(バイト)は、いったいどれくらいなのでしょうか? お分かりの方がいらっしゃいましたら、アドバイスお願いします。

  • EXCELのセル内検索に文字数上限?

    EXCEL2003の各セルに多くの文字数を入力しているのですが、 検索を掛けても、該当の文字がセル内にあるにも関わらず 検出されないことがあります。(その文字がセル内の後半にあることが多いように思います。) 検索で検出される文字数はセル単位で 上限があったりするのでしょうか? 例えば、「apple」を検索する場合、 セルの初めから100文字以内にすべての文字が入っていれば検出されるが、 101文字以降にどれかの文字が掛かってしまっていると検出されない、等。 ご存知の方、回答をお願いします。

  • ■エクセル■複数のセルから一定の数を引くには

    エクセルで、選択した複数のセルから、 一定の数を足したり引いたりするにはどうすればよいのでしょうか? 大変初歩的な質問で申しわけありません。 ヘルプを見てもなかなか見つからず、緊急に知りたいので質問させて頂きました。 どなたかご回答よろしくお願い致します。

  • Excelマクロであるセル条件を検出、他の決められたセルに色を付けたい

    Excelマクロであるセル条件を検出、他の決められたセルに色を付けたい その2 例えば、エクセルのあるセルに"A"が書かれていた場合、次にその列のセルに"A"書かれているまでは、続く列のセルには色をつけるようにしたいのですが、良い方法を教えて頂けないでしょうか? 対象となるシート(列方向)に、今回のパターンが複数存在し、 それぞれにこの処理を実施することを想定しております。 (イメージ画像を添付します)

  • マクロを使って文字が入力されたセル数を数える

    マクロを用いて、文字が入力されたセル数をカウントしたいと考えていますがうまくいかず悩んでおります... 具体的には、セルB1からB1000にデータが入力された場合、左隣のA列に1から番号を付したいと考えています. B列が空白のままの行は、A列も空白にしておきたいです. (セルB1からB1000まで全てにデータが入力された場合、A1からA1000には1から1000までの番号が入る) また、A列に付された番号を判断し、100番毎にA列からE列までセル背景を色分けしていきたいと考えています. (B列が空白ならxlNoneでその行は無色のままにしたい) セル背景の色分けだけであればうまくいったのですが、B列の入力状況により自動でA列に番号(数字)を変化させたら思い通りに動かず困っています. ご教示、宜しくお願いします.

  • 複数のセルの文字数を揃えたい

    A列に1000個ほどの入力済みのセルがあります。 それぞれ、1-10文字程度のデータが入力されているのですが、 各セルの入力データの末尾に「・」を追加で入力して 全てのセルの文字数を揃える(例えば50文字)ことは可能でしょうか? 個別に「・」を手入力するしか無いのでしょうか? よろしくお願いします。

  • Excelで半角の文字を含むセルを探したい

    Excel2000を使っています。 30000行のデータがあり、このうちの1列について、半角文字を含んでいるセルを探し出したいのです。 (本来はすべて全角のはずなのですが、どこかに半角文字が混ざったセルがあります) 検出できるだけでいいので、何か良い方法を教えてください。