• ベストアンサー

Excelの質問です。A列に条件を満たす文字列があれば、A~L列に網掛けor色をつけたいです。

いつも皆様にお世話になっております。 今回も、Excelで困ってしまいまして(汗) 今、『ホテル.xls』というファイルのSheet1に、以下のようなデータが並んでいます。 ny1|メイフェア・ホテル・バリョーニ(ニューヨーク) si1|ラッフルズ(シンガポール) in1|アマンキラ(インドネシア・バリ島) ny4|グラマシー・パーク・ホテル(ニューヨーク) ba1|スコタイ(バンコク) ny24|ウォルドルフ=アストリア(ニューヨーク) ny31-h|ヘルムズレイ・パレス(ニューヨーク) ny71-h|エセックス・ハウス(ニューヨーク) ny2|モーガンズ(ニューヨーク) ny3|リッツ・カールトン(ニューヨーク) ca1|オーシャン・クラブ(カリブ海) ch1|ホテル・ニッコー・シカゴ(シカゴ) ch2|ドレイク(シカゴ) ch-3|フォーシーズンズ・シカゴ(シカゴ) ・ ・ ・ “|(縦棒)”は、列と列の区切りです。 データは1000行以上あります(ToT) A列にはIDのようなデータ、B列には、ホテルの名称がずらりと記載されております。 B列は全て、データが埋まっていますが、A列には空白のセルもあり、データは点在している状況です。 また、省略しますがC~L列には、近隣の観光地や料金などのデータが記載されています。 このデータの中から、A列を検索し、「ny*」「ch*」を満たすデータ、つまり、ニューヨークとシカゴのホテルのデータがあれば、その行データのA~L列全てに網をかけるか、濃い色をつけたいのです。 ただ、「ny*」「ch*」の中でも、例外として「ny-*」「ch-*」に関しては、網かけもせず、色もつけないようにしたいのです(>_<) ny1|メイフェア・ホテル・バリョーニ(ニューヨーク)・・・A~L列まで網掛けor塗りつぶし si1|ラッフルズ(シンガポール) in1|アマンキラ(インドネシア・バリ島) ny4|グラマシー・パーク・ホテル(ニューヨーク)・・・A~L列まで網掛けor塗りつぶし ba1|スコタイ(バンコック) ny24|ウォルドルフ=アストリア(ニューヨーク)・・・A~L列まで網掛けor塗りつぶし ny31-h|ヘルムズレイ・パレス(ニューヨーク) ny71-h|エセックス・ハウス(ニューヨーク) ny2|モーガンズ(ニューヨーク)・・・・・・A~L列まで網掛けor塗りつぶし ny3|リッツ・カールトン(ニューヨーク)・・・・A~L列まで網掛けor塗りつぶし ca1|オーシャン・クラブ(カリブ海) ch1|ホテル・ニッコー・シカゴ(シカゴ)・・・・A~L列まで網掛けor塗りつぶし ch2|ドレイク(シカゴ)・・・・・・A~L列まで網掛けor塗りつぶし ch-3|フォーシーズンズ・シカゴ(シカゴ) ・ ・ ・ このように、ニューヨークとシカゴの地名を示すローマ字2文字の後に、すぐ数字が来るデータにのみ、処理を施したいのです。 「すぐ数字が来るデータ」における“数字”は、3桁まであります。(例:ny102など) マクロを記録してみたのですが、全然うまくいきませんでした・・・(ToT) 何かよい方法はありませんでしょうか?

この投稿のマルチメディアは削除されているためご覧いただけません。
  • dj-s
  • お礼率81% (228/280)

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

私はいつも質問には例を挙げてくださいと書いてますが、このケースは過剰かつ自己関係に偏った例の挙げ方です。 抽象化して適当数の例を挙げてください。 >A列を検索し、「ny*」「ch*」を満たすデータを網掛け >A列が>ny-*」「ch-*」に関しては、網かけもせず で判ると思う。 ーー エクセルの「書式」-「条件付き書式」は知っているのだろうね。質問異1言も出ないが。 ーー 知っておれば「数式が」で、式の書き方がどうなるかの問題だけ。 ーー 「含む」はCountif(条件に*付き)が短いでしょう。Find関数は長くなる。回答文字列を、空白で置き換えて長さの変化を見る手も有る。 ーー 例データ 式の確認のため ny1 g si1 in1 ny4 g ba1 ny24 g ny31-h g ny71-h g ny2 g ny3 g ca1 ch1 g ch2 g ch-3 右列の式は  =IF(AND(OR(COUNTIF(A1,"ny*")>0,COUNTIF(A1,"ch*")>0),NOT(COUNTIF(A1,"ny-*")>0),NOT(COUNTIF(A1,"ch-*")>0)),"g","") gは該当した行の意味。 これを条件付書式にもっていく。そのままではないことに注意。 まず関係列を含めてデータを全て範囲指定する。 「数式」がで =(AND(OR(COUNTIF($A1,"ny*")>0,COUNTIF($A1,"ch*")>0),NOT(COUNTIF($A1,"ny-*")>0),NOT(COUNTIF($A1,"ch-*")>0))) 前記の式でIFを除き、かつ,"g",""の部分を除く。 またA1は$A1とする。(この意味がわかるかな) あとは書式(セルのパターン色)の設定をして、OK これでセルの値がg行に色がついた。ただしgの列は無くても良い。 ) nyなどはA列に有る例で説明した。あり場所が変わると式も変わる。

dj-s
質問者

お礼

すいません、また例の提示がうまく抽象化できず、冗長になってしまいました(>_<) それでも、回答していただき本当にありがとうございます! M列に、imogasiさんに教えていただいた、 =IF(AND(OR(COUNTIF(A1,"ny*")>0,COUNTIF(A1,"ch*")>0),NOT(COUNTIF(A1,"ny-*")>0),NOT(COUNTIF(A1,"ch-*")>0)),"g","") を入れて下にオートフィルすると、「A列において"ny*"と"ch*"を満たすデータ」全てに、"g"という文字が加わりました。 その後、 =(AND(OR(COUNTIF($A1,"ny*")>0,COUNTIF($A1,"ch*")>0),NOT(COUNTIF($A1,"ny-*")>0),NOT(COUNTIF($A1,"ch-*")>0))) で条件付き書式を設定すると、うまくいきました! A~L列全てが、塗りつぶされました(^_^;) ただ、「ny31-h」「ch-3」のような、間に-(ハイフン)があるデータに関しては、塗りつぶしたくないのですが・・・「ch-3」は、塗りつぶすことなくうまくいったのですが、「ny31-h」「ny71-h」がある行は、塗りつぶされてしまいました(ToT) たぶん、imogasiさんが書いてくださった、「~を除く」を指定する条件式、 ・・・NOT(COUNTIF($A1,"ny-*")>0),NOT(COUNTIF($A1,"ch-*") の辺りで、"ny-*"が、「ny31-h」「ny71-h」をカバーする条件ではないからだと思い、"ny*-h"と書きかえると、問題なくうまく動作しました(^_^;) あと、imogasiさんが書いてくださった1番目の式は使わずに、2番目の式、 =(AND(OR(COUNTIF($A1,"ny*")>0,COUNTIF($A1,"ch*")>0),NOT(COUNTIF($A1,"ny*-h")>0),NOT(COUNTIF($A1,"ch-*")>0))) だけ使っても、うまく塗りつぶすことができました! 本当にありがとうございました<m(__)m>

その他の回答 (5)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.6

順序が逆だったんですね。記載する時に間違ったみたいです。 > ただ、A列だけしか塗りつぶしてくれないのです・・・同時にL列まで塗りつぶしてほしいのですが、どうすればいいでしょうか(ToT) =COUNTIF($A1,"ch*") =COUNTIF($A1,"ch-*") というようにA1のAの前に$をつけてください。

dj-s
質問者

お礼

うまくいきました! ありがとうございます<m(__)m>

  • Hachi5592
  • ベストアンサー率36% (252/698)
回答No.4

No.3の回答者です。 補足します。 「ny123-h」のように数字3桁の後ろに「-h」などが付く場合は 条件式の部分を以下のようにしてください。 「=AND(LEFT(A2,2)="ny",VALUE(MID(A2,3,4))<1000,VALUE(MID(A2,3,4))>0)」 条件式2のchについても同じです

  • Hachi5592
  • ベストアンサー率36% (252/698)
回答No.3

条件付き書式を使います。 行2の列A:Lにいれる条件付き書式を下に書きますので他の行へは この行の書式をコピーしてください。 <条件1> (「」は式に含みません) 「数式が」 「=AND(LEFT(A2,2)="ny",VALUE(MID(A2,3,3))<1000,VALUE(MID(A2,3,3))>0)」 として書式を網掛け等に <条件2> (同上) 「数式が」 「=AND(LEFT(A2,2)="ch",VALUE(MID(A2,3,3))<1000,VALUE(MID(A2,3,3))>0)」 として書式を網掛け等に 以上、お試しあれ。

dj-s
質問者

お礼

あれ、うまくいかないです・・・AからL列まで、データのある箇所全てを範囲選択した後、Hachi5592さんが書いてくださった、条件1の =AND(LEFT(A2,2)="ny",VALUE(MID(A2,3,3))<1000,VALUE(MID(A2,3,3))>0) で、書式を設定してみたのですが、A列の、ny*やch*に該当しない箇所が塗りつぶされてしましました(>_<) たぶん、私のやり方に問題があるからだと思いますが・・・何しろ、条件付き書式というのは、今回初めて知りましたので(汗)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

A:Lの範囲を選択した状態で「書式」「条件付き書式」 「セルの値が▼」の▼をクリックして「数式が▼」に変更 「=COUNTIF($A1,"ch*")=1」として書式ボタンでパターンを変更 追加ボタンを押し条件2にて 「セルの値が▼」の▼をクリックして「数式が▼」に変更 「=COUNTIF($A1,"ny*")=1」として書式ボタンでパターンを変更 変更するパターンが1種類でいいなら条件式を 「=COUNTIF($A1,"ch*")+COUNTIF($A1,"ny*")=1」 でOKです。 この設定は条件の列名であるAの前に$を付けて条件列を固定することで可能となります。

dj-s
質問者

お礼

条件書式ってすごいですね!mshr1962さんが書いてくださった =COUNTIF($A1,"ch*")+COUNTIF($A1,"ny*")=1 を入力すると、L列まで全部塗りつぶしてくれました(^_^;) kmetuさんへの疑問も解決しました、$を付ければ選択範囲まるごと、A列に指定した条件に従ってくれるみたいですね。 ただ、「ny-*」や「ch-*」も塗りつぶしてしまったので、ここから何とか、これらの塗りつぶしを取り除きたいのですが・・・ =COUNTIF($A1,"ch*")+COUNTIF($A1,"ny*")=1 という式に、「"ch-*"と"ny-*"は除く」みたいな条件式、追加することはできないでしょうか? 図々しくてすいません、お気が向かれましたら、また回答いただければ幸いです(>_<)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

A~L列まで条件式書式を使って 数式が =COUNTIF(A1,"ch-*") 網掛けOR塗りつぶしの指定 数式が =COUNTIF(A1,"ch*") 網掛けOR塗りつぶしなしの設定 の順に作成してみてください。

dj-s
質問者

お礼

初めて知りました、「条件付き書式」という便利な機能があるんですね(^_^;) 逆ではありませんか? 先に、 =COUNTIF(A1,"ch*") で塗りつぶして、次に =COUNTIF(A1,"ch-*") で「塗りつぶしなし」で書式を設定すると、うまくいきました!「ch-*を除く、ch*のみ」塗りつぶすことができました! ありがとうございます<m(__)m> ただ、A列だけしか塗りつぶしてくれないのです・・・同時にL列まで塗りつぶしてほしいのですが、どうすればいいでしょうか(ToT)

関連するQ&A

  • (条件付書式)EXCELで土日の行を網掛けする条件

    (条件付書式)EXCELで土日の行を網掛けする条件 を教えてください。以下でやってもできませんでした。 (やったこと)B列は日付が入っています。 シートを全選択→条件付書式 =OR(WEEKDAY(B40)=7,WEEKDAY(B40)=1) →網掛け 結果、A、Bの列は期待通りなのですが、C列以降が全て網掛け されてしまいます。

  • NYのウォルドルフ アストリアではチェックイン前に 荷物を預けることは可能でしょうか?

    タイトルの通りなのですが・・NYのウォルドルフ アストリアではチェックイン前に荷物を預けることはできるのでしょうか?そのあたりは大丈夫でしょうか?どなたかご存知の方教えてください。アメリカのホテルによってはそれはできないところもあると聞きまして心配になりました。わかる方・・教えてください、宜しくお願いします。

  • flyの訳が難しい。

    Warburg flies all of its investment professionals in six countries to the Waldorf-Astoria in New York City each year for an annual meeting. ヴァールブルクは毎年、年次総会のために6つの国で投資専門家のすべてをニューヨーク市のウォルドーフ-アストリアに飛ばします。 ???訳が分かりません><ここでのウォルドーフ-アストリアとは、ホテルの名前なんでしょうか?それから、fly を調べたら、成功するという意味もあったのですが、どれにしてもなんか変な文章になってしまいます。 宜しくお願いします。。。

  • L列で条件に該当する場合の、A列のデータ種類数

    A列には「文字列」が入力されています。 L列には計算式が入力され、計算結果が数字で表示されています。 L列の計算結果が「0より大きい」「0より小さい」という条件に該当する、A列のデータの種類数をカウントする関数を教えてください。データ行数は「1行目から100行目」でお願いします。 A列 L列 田中 100 鈴木 -50 田中 70 佐藤 80 佐藤 -70 工藤 -15 L列で「0より大きい」 → A列のデータの種類数は田中、佐藤なので 「2」という計算結果を導き出したい。 L列で「0より小さい」 → A列のデータの種類数は、鈴木、佐藤、工藤なので、「3」という計算結果を導き出したい。 Excel2013を使っていますが、2007にも対応できる計算式だと、なおありがたいです。 お手数をおかけいたしますが、よろしくお願いします。 

  • Excelの質問です。A列に、指定した文字列があれば、その文字列があるセルの行を、Sheet2に移動させたいです。

    今、Sheet1のA列、B列、C列に、以下のようなデータがあります。 A----------B----------C ・・・ どんぶり(長野県)----------ソースかつ丼----------駒ヶ根市・伊那市  ・・・ ラーメン(岐阜県)----------高山ラーメン----------高山市 蕎麦(長野県)----------高遠そば----------伊那市高遠町 どんぶり(長野県)----------さくら丼----------飯島町 その他麺類(長野県)----------ローメン----------伊那市高遠町 どんぶり(長野県)----------ほたる丼----------辰野町 どんぶり(長野県)----------紫輝彩丼----------宮田村 蕎麦(長野県)----------木曽すんきそば----------木曽町 どんぶり(長野県)----------ごぼとん丼----------松川町 ・・・ このようなデータが、1000行ぐらいあるのですが、この中から、「A列に"どんぶり"もしくは"蕎麦"という用語を含むセルがあれば、そのセルがある行全てのデータ(A~L列ぐらいまであります。)を、Sheet2に移動させる」といったことは、できないでしょうか? 今は、「フィルタ→テキストフィルタ」で、A列に「"どんぶり"を含むor"蕎麦"を含む」という条件でソートを行い、ソートされたものをコピー⇒sheet2にペーストというやり方を実践しているのですが、このテキストフィルタを使ったやり方には、限界を感じていまして。 文字数の都合上、記載はしていないのですが、データは1000行ほどあり、A列には「パスタ(●●県)」「カレー(●●県)」といったデータもあります。 その中から、例えば「"どんぶり"を含むor"蕎麦"を含むor"パスタ"を含む」のように、文字列の条件を3つ以上指定する場合、テキストフィルタを使ったやり方では、それができないのです(ToT) 何か別のスマートな方法がございましたら、回答いただけないでしょうか? よろしくお願いします<m(__)m>

  • Excelの質問です。条件付き書式で特定のセルだけを塗りつぶしたいです。

    以前、似たような質問でお世話になったものです。 http://okwave.jp/qa5131560.html 前回は、「セルに指定した文字列がある場合、その文字列がある行の、A~L列全てを塗りつぶす」にはどうすればよいかという質問を致しまして、皆様のお力のおかげで、問題を解決することができました。 幸い、私のExcelには「条件付き書式」の機能が搭載されていましたので、A1セルをアクティブにした状態でデータを全選択し、 =COUNTIF($A1,"ch-*") と、条件を入力すれば、A列に"ch-*"があるデータを全て塗りつぶすことができました。 ですが今回は、A列に指定した文字列があれば、D~F列のみを、塗りつぶしたいのです。 局地的に条件を指定し、塗りつぶすには、どうすればよいのでしょうか?

  • Excel 複数列を同じ条件で抽出・合計する方法

    Excelの抽出・合計について教えてください。 配列を用いた方法などいろいろ検索しましたが式が長くなるので、 もう少しわかりやすくできないかと思っていろいろ探した結果、 ここに辿り着きました。 作業対象のSheetは次のとおりです。 ・行数はその月によって可変です。 ・A~L列まであると仮定します。これは固定です。 ・合計を求めたいのはL列の値となります。 抽出条件(AND条件) ・A~E列とI列が0(ゼロ) ・F~H列が0(ゼロ)でない、つまり数値が入っている 上述の条件をともに満たすデータのL列の数値の合計を求めたいと いうのが、今回の作業です。 現在はSUMPRODUCT関数を使って1列ずつ条件を設定しています。 しかし、式がたいへん長くなるので、もう少し簡略化したいです。 できればピボットテーブルやデータベース関数は余分な列を使うので 避けたいと思っています。 アドバイス、よろしくお願いいたします。

  • エクセル 文字列を分割するマクロについて

    1行目から200行目くらいまで、A列に次のようなデータが入っています。 (A1セル) A 1 A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S このデータを下記のようにカンマごとに別のセルに分割するマクロを 教えていただけないでしょうか。 A1に「A」を、S1に「S」を入れたいと思っています。  A B C ・・・ R S 1 A B C ・・・ R S

  • エクセル 網掛けしてあるセルの行を残してそれ以外の行を削除するVBA

    windows-xp、エクセル2003を使っています。 エクセルデータがA列からU列まであります。 (1000件程かな、時々AA列まである時もあります) G列には、網掛けしてあるセルがあります。 そこで!! 網掛けしてあるセルの行だけを残して、網掛けがされていない行のデータを一気に削除する!というマクロ(VBA)を作りたいのですが、どうすればよいでしょうか? VBAまだ、よくわかっていないので、初心者レベルでわかりやすく教えてくださると助かります。 宜しくお願い致しますm(_ _)m

  • excel 文字列の重複していない部分を抽出したい

    色々探してみたのですが、わからず大変困っています。宜しくお願い致します。 やりたいこと:下記のデータから、共通する部分を除外して特定セルに貼付けたい。 <補足説明> 共通部分が1ヵ所の物と、2か所の物がありますので、出来れば両方抽出したいですが、もし2か所あると不可な場合は、共通部分1ヵ所のみの抽出でお願い致します。 ※共通部分は最大2か所迄で、位置はランダムです。 ※データ数は1~3000です。 ※商品名の列はH列、抽出した文字列はV列に貼り付けます。 説明文も入れてくださると大変助かります。 【元データ】 セルH2:ボールペン あいう セルH3:バッグA ブラック abc セルH4:バッグA オレンジ abc セルH5:バッグA レッド abc セルH6:シャツB ブラック アイウ S セルH7:シャツB ブラック アイウ M セルH8:シャツB ブラック アイウ L セルH9:シャツB ブルー アイウ S セルH10:シャツB ブルー アイウ M セルH11:シャツB ブルー アイウ L 【下記のようにしたい】 ※V列の文字列は半角スペースで区切りたいです。 セルH2:ボールペン あいう     セルV2: セルH3:バッグA abc         セルV3:商品選択 ブラック オレンジ レッド                             ※もしくは、ブラック オレンジ レッド セルH4: セルV4: セルH5:                 セルV5: セルH6:シャツB アイウ        セルV6:商品選択 ブラック ブルー改行改行商品選択1 S M L                             ※もしくは、ブラック ブルー改行改行S M L セルH7:                 セルV7: セルH8:                 セルV8: セルH9:                 セルV9: セルH10:                 セルV10: セルH11:                 セルV11: ※最終的には、下記のようにしたいです。 セルH2:ボールペン あいう     セルV2: セルH3:バッグA abc         セルV3:商品選択 ブラック オレンジ レッド セルH4:シャツB アイウ        セルV4:商品選択 ブラック ブルー改行改行商品選択1 S M L

専門家に質問してみよう