• ベストアンサー

Excelで、条件に該当するデータに「/(罫線)」を引きたいです。

Excelで困っています(>_<) 今、ファイルが二つあります。 一つめのファイルは『野菜&果物ファイル.xls』、二つ目のファイルは『果物ファイル.xls』とファイル名を付けています。 一つめのファイルには、 セロリ マンゴー バナナ トマト リンゴ 白菜 ホウレンソウ イチゴ ・ ・ ・ と、野菜と果物の名前がA1からずら~っと縦に並んでいます。 二つ目のファイル『果物ファイル.xls』には、 バナナ リンゴ イチゴ ・ ・ ・ と、A1から果物の名前だけがずら~っと並んでいます。 ここで、『果物ファイル.xls』にある全果物のデータを参照し、『野菜&果物ファイル.xls』の中で、一致するデータ(果物)があれば、その該当データに「/(罫線)」を引きたいのです。 そして、野菜のデータと果物のデータの区別を、視覚的にわかりやすくしたいのです。 「色をつける」「網をかける」のでも大丈夫なのですが、モノクロでプリントアウトした際も一目でわかるのはやはり、「/(斜線)」だと思いまして。 関数やマクロを使って、何とか解決できないでしょうか?

  • dj-s
  • お礼率81% (228/280)

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

No3-4 merlionXXです。 No4の再質問の書き込みを見ました。 罫線は並べ替えても移動してくれませんからね。 それなら並べ替えてから罫線をひくことになります。 こんなんでどうでしょ? Sub test03() Dim myRng1 As Range, myRng2 As Range, c As Range, cc As Range With Workbooks("野菜&果物ファイル.xls").Sheets("Sheet1") Set myRng1 = .Range(.Range("A1"), .Range("A1").End(xlDown)) myRng1.Borders(xlDiagonalUp).LineStyle = xlNone .Columns("B:B").Insert Shift:=xlToRight End With With Workbooks("果物ファイル.xls").Sheets("Sheet1") Set myRng2 = .Range(.Range("A1"), .Range("A1").End(xlDown)) End With For Each c In myRng1 For Each cc In myRng2 If c.Value = cc.Value Then c.Offset(0, 1).Value = 1 End If Next cc Next c With Workbooks("野菜&果物ファイル.xls").Sheets("Sheet1") .Range(myRng1, myRng1.End(xlToRight)).Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlNo, Orientation:=xlTopToBottom With .Range(.Range("B1"), .Range("B1").End(xlDown)).Offset(0, -1).Borders(xlDiagonalUp) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With .Columns("B:B").Delete Shift:=xlToLeft End With End Sub

dj-s
質問者

お礼

再度ご回答いただき本当にありがとうございます! merlionXXさんのマクロを実行してみたのですが、 実行時エラー ' 1004 ' Border クラスの LineStyle プロパティを設定できません。 というエラーメッセージと共に、 myRng1.Borders(xlDiagonalUp).LineStyle = xlNone の箇所が、黄色くマーカーされてしまいました(ToT) マイクロソフトのサポートページ↓ http://support.microsoft.com/kb/157556/ja にも、同じようなエラーの例が記載されていたのですが、私が使っているのはExcel2007なので、あまり関係ないような気がしました・・・ どこを修正すべきでしょうか? 本当にすいません、お暇な時に、もう一度ご回答いただければ幸いです。 よろしくお願いします。

その他の回答 (6)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.7

myRng1.Borders(xlDiagonalUp).LineStyle = xlNone は斜めの罫線を削除しています。 ひょっとして、シート保護してませんか? 保護してると手動でも罫線の削除はできませんのでマクロでもエラーになります。

dj-s
質問者

お礼

何度も親身に教えていただきありがとうございます! 原因がわかりました。 マクロを『野菜&果物ファイル.xls』上ではなく、『果物ファイル.xls』上で実行していたのが問題でした。 『野菜&果物ファイル.xls』のブック上でマクロを実行すると、うまく斜線が引かれました(^_^;) ただ、merlionXXさんが書いてくださったマクロは、B列に何かデータが入っていると、うまくできませんでした(ToT) エラー表示されることはないのですが、変なところに罫線が引かれたり、「1」という数字がB列のデータに上書きされるといった事態が生じたのです。 実は、オリジナルのデータは、B列、C列にも、たくさんのデータが入っておりまして・・・ 他力本願で本当に申し訳ないのですが、ここ↓ http://okwave.jp/qa5015030.html に、新たな質問をさせていただきました。 B列が埋まってしまっている状態で、A列の特定のデータに、罫線を引いて並べかえたいのです。 merlionXXさんぐらい詳しい方でないと、誰も回答してくれない気がします。 お暇な時で構いませんので、再度お力をお借しいただければ幸いです(>_<) 今回は本当に助かりました、どうもありがとうございます!

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.6

merlionXXです。 No5で回答した Sub test03 を、エクセル2000、2003、2007の3バージョンで実行してみましたが、そのようなエラーは再現できませんでした。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

No3 merlionXXです。 先ほどのでも大丈夫とは思いますが、念のため修正します。 Sub test02() Dim myRng1 As Range, myRng2 As Range, c As Range, cc As Range With Workbooks("野菜&果物ファイル.xls").Sheets("Sheet1") Set myRng1 = .Range(.Range("A1"), .Range("A1").End(xlDown)) myRng1.Borders(xlDiagonalUp).LineStyle = xlNone End With With Workbooks("果物ファイル.xls").Sheets("Sheet1") Set myRng2 = .Range(.Range("A1"), .Range("A1").End(xlDown)) End With For Each c In myRng1 For Each cc In myRng2 If c.Value = cc.Value Then With c.Borders(xlDiagonalUp) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End If Next cc Next c End Sub

dj-s
質問者

お礼

二度も回答していただいたのに、返信が遅くなってすいません! merlionXXさんのやり方すごいですね、教えていただいたマクロを実行すると、うまくいきました!該当するデータに斜線が引かれました!! ほんと驚きです。 誠に図々しいのですが、もう1度ご指導いただきたい疑問が湧きまして(>_<) データにうまく斜線が引かれ、 セロリ マンゴー バナナ(斜線あり) トマト リンゴ(斜線あり) 白菜 ホウレンソウ イチゴ(斜線あり) のようになったのですが、斜線が引かれたデータと、斜線が引かれてないデータが、まばらに分散していることに頭を抱えています。 この状態から、なんとか バナナ(斜線あり) リンゴ(斜線あり) イチゴ(斜線あり) セロリ マンゴー トマト 白菜 ホウレンソウ と、斜線のあるデータと斜線のないデータを、それぞれ近くにかためて表示することは、可能なのでしょうか? 「並べ替え」とか「フィルタ」とかいじってみたのですが、どうしてもうまくいきません。 マクロを書き換えなければならないのでしょうか・・・もしよろしければ、再度ご指導いただきたいです。 よろしくお願いします(>_<)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

マクロでも良いとのことなので一例です。 BOOK名はありましたがSheet名がないので2つのBOOKともSheet1だとします。 データは両方ともA1セルから下へ縦に一列にあるものとします。 データは途中に空白はないものとします。 両方のBOOKを開いた状態で以下のマクロを実行してください。 Sub test01() Set bk1 = Workbooks("野菜&果物ファイル.xls") Set bk2 = Workbooks("果物ファイル.xls") With bk1 Set myRng1 = .Sheets("Sheet1").Range(.Sheets("Sheet1").Range("A1"), .Sheets("Sheet1").Range("A1").End(xlDown)) End With With bk2 Set myRng2 = .Sheets("Sheet1").Range(.Sheets("Sheet1").Range("A1"), .Sheets("Sheet1").Range("A1").End(xlDown)) End With For Each c In myRng1 For Each cc In myRng2 If c.Value = cc.Value Then With c.Borders(xlDiagonalUp) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End If Next cc Next c End Sub

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

VBAでやらないと出来ないでしょう。 それも変更即時反応型は難しい。 ーーー 近い機能は条件付き書式なのです。 A.そしてその条件で「数式が」を選ぶことで、VLOOKUPのような(検索)関数も使えるでしょうし、 B.条件に合ったものに罫線も引けます ーー しかし問題は、相手側に「一致するデータ(果物)があれば」ですが 複数有るときは、第2番目以降を捉えることが関数では難しい(普通で不可能)なのです。 その重複出現あるかどうかのことを質問に書いてないのは、コンピュタ利用経験が少ない証拠です。これをデータの寄せ集まりでは、いつも意識すること。処理に大きく影響します。 ただ相手の検索する表に本件のように、有るかないかを調べるだけなら、2番目以降の重複出現は関係ない(1つめが見つかればとにかくあると言える)ですが。 ーー では ISERRORとVLOOKUPの組み合わせで出来そうか考えます。 普通に式を書くと、参照する検索表が他シートだとエラーになる。他ブックならましてダメ。 Sheet1とSheet2の例ですと 例データ Sheet1 A1:A5 aaa bbb cc ddd ee これに範囲に名前をつける(ここでは、検索という名前とする) Sheet2に A1:A5に aa bb cc dd ee と有るとする。 ーー Sheet2のA1:A5(データ全て)を範囲指定する。そして 書式ー条件付き書式ー数式が 数式に =NOT(ISERROR(VLOOKUP(A1,検索,1,FALSE))) 書式に セルのパターン色でライトブルーを指定ーOK ーー 結果 cc、eeに色がつきました。 ーー 書式をパターン色にしたのは、私のバージョンの場合、罫線で斜線が出てこないからです。質問者の場合、出てくればそれでやってください。 ーー 他ブックの場合ですが、同じくセル範囲に名前をつけるほか無いと思うが、質問者でやってみてください。うまく行くとは思いますが、ブックがちがうと、エクセルでは他世界で、何かと難しくなったり、不可能に有る場合はあります。 セル範囲に名前をつける問題で、シートレベル、ブックレベルなどあり、特別に勉強が必要だと思う、分野だと思います。

dj-s
質問者

お礼

うまくできました! ありがとうございます<m(__)m> やはりブックレベルだとややこしくなるのですね。 ただ、2つのファイルがどちらもデータがいっぱい入力されていて重いので、1つのファイルにまとめると相当重くなってしまう状況なのです(>_<) ブックレベルも勉強しなければならないと痛感しました(^_^;)

  • 082
  • ベストアンサー率41% (13/31)
回答No.1

スマートではないですが、関数でできそうです。 (1)野菜&果物ファイル.xlsのB列に以下の式を入力します。 =ISERROR(MATCH(A1,[果物ファイル.xls]Sheet1!$A$1:$A$3,0)) (2)野菜&果物ファイル.xlsのA列の値が入力されているセルを全て  選択し、書式⇒条件付書式を選択し、『数式が』『=$B1=FALSE』  と入力し、書式を設定する。 ※残念ながら斜線は引きないみたいですが、濃い目の色をつければ、  白黒印刷でも区別できると思います。

dj-s
質問者

お礼

返信遅くなってすいません(>_<) 082さんのやり方でもうまくいきました! ありがとうございます<m(__)m>

関連するQ&A

  • ミキサーでのスムージーについて

    ろくに料理もしないのですが、健康をよくするため、ミキサーを始めようと思います。 SKR-J250を購入しました。 本日りんご、みかん、いちご、キウイ、バナナ、ホウレンソウ、小松菜、水菜を切りました。 他試そうと思ってるのはレモン、パイン、セロリ、アボガド、春菊、アサイーです。 以下簡単でいいですので教えてください。 (1)果物+牛乳、果物+野菜+水の組み合わせがよいのでしょうか。 (2)りんご、みかん、キウイの皮はそのままでいいのでしょうか。 (3)いちごのヘタは手でちぎっていますか。 (4)長続きさせるためなるべく包丁を使わずできるものがいいのですが、バナナ、みかん他何がありますか? (5)どのような果物、野菜が栄養価がありますでしょうか。おすすめなのとか。。 (6)豆乳がいいと聞きましたが、どのように売っているのでしょうか。コンビニとかの調整豆乳とかのことでしょうか。 (7)スムージーににんじんはNGと聞きましたが、正しいですか。 (8)今日買ってきてまとめて切った野菜、果物が冷蔵後に入りきらないのですが、どれくらい持つのでしょうか。冷蔵庫の場合、外だしの場合それぞれで。。(次からは少しずつ切ります。)

  • エクセルで並び順について。

    A B 1 2 1りんご    2イチゴ 3 2イチゴ    3バナナ 4 3バナナ    9柿 5 4キウイ    6マンゴ 6 5なし     7びわ 7 6マンゴ 8 7びわ     5なし 9 8メロン       10 9柿 エクセル上でAの列と同じ並び方(同じ行)でBも並べたいのですが、 一番早い方法を教えてください。 ちなみに大量のデータがあるので、関数とかがあれば助かります。

  • エクセル関数でおしえてください。

    エクセル関数でおしえてください。 以下のような表があります。   A     B     C     D     E  1 いちご   1 2 バナナ        1  3 ぶどう             1 4 サクランボ                1 5 もも    1 6 りんご        1 7 なし              1 8 すいか                  1 9 果物(1) いちご バナナ ぶどう サクランボ 10果物(2) もも  りんご なし  すいか B1~E8に「1」のフラグをたてます。 (フラグはランダムにたちます) 9、10行目に関数をいれて、いちご、もも・・と果物の名前を表示させたいです。 どなたかいい知恵をかしてください。 よろしくお願いします。

  • 別シートのフィールドから同一値検索、隣フィールド値取得の関数を教えてください。

    ■シート1 ---------------- □分類□名 称□ ---------------- |果物|りんご| ---------------- |果物|バナナ| ---------------- |果物|みかん| ---------------- |野菜|トマト| ---------------- |野菜|セロリ| ---------------- |野菜|レタス| ---------------- ■シート2 ---------------- □名 称□分類□ ---------------- |りんご|  | ---------------- |トマト|  | ---------------- |バナナ|  | ---------------- |セロリ|  | ---------------- |みかん|  | ---------------- |レタス|  | ---------------- シート2の名称にてシート1の名称を検索して、シート2に分類を取得することは可能でしょうか。 よろしくお願いします。

  • エクセルでファイル名を変更したい

    フォルダ"果物"に次のファイルがあります。 りんご.xls バナナ.xls みかん.doc なし.xls START.xls START.xlsを開きセルA1に"自分の"と入力して、各ファイル名を次のように変更したいのですが、宜しくお願いします。 自分のりんご.xls 自分のバナナ.xls 自分のみかん.doc 自分のなし.xls

  • 果物(野菜)の好き嫌い

    この中から挙げる果物(野菜) 大好き◎ 好き〇 普通△ 嫌い× 回答下さい。 (1) 柿 (2) みかん (3) マンゴー (4) グレープフルーツ (5) ぶどう (6) 桃 (7) バナナ (8) りんご (9) なし (10) キウイフルーツ (11) すいか (12) メロン (13) いちご (14) いちじく (15) さくらんぼ

  • 該当する項目以外の数の総計をだしたい時

    次のようなデータで果物の名前がA1に、果物の数がB1に入力されたときに りんごとみかん以外の果物の数だけをC1のセルに出したい場合は どのような関数を前もって組んでおくのが一番適切なのでしょうか?   A1    B1   りんご  2   みかん  1   ぶどう  1   いちご  2   なし   3 ご回答宜しくお願い致します。

  • エクセル関数 データの抽出について

    エクセル2010 重複データの抽出。 重複データの抽出方法をご教示ください。 抽出先はシート1のA列A3~抽出データの分だけ リストはシート2のB2:AB32まで フィルターオプションなども使ってみたのですが どうも上手くいきません。 どなたか知恵をお貸しください。 方法はできれば関数だといいのですが(データが増えてもいいように) できなければ他の方法でもいいです。 VBAなどは全くの初心者なので出来れば避けたいのですが… シート2     A    B   C    D~AB32 1  "" 2 いちご ばなな いちご りんご 3 みかん いちご ばなな いちご 4 りんご ばなな いちご みかん 5 みかん いちご ばなな りんご 6 ばなな ばなな りんご いちご : : 32 シート1(重複データなし)  A 1  "" 2  "" 3 いちご 4 みかん 5 りんご 6 ばなな 7 : : 抽出リストのデータはシート2のB2:AB32にぎっしり入っています。 宜しくお願い致します。

  • エクセル オートフィルター

    オートフィルターについて教えて下さい。 同じシート内で、独立した複数のオートフィルターを用いることは出来ますか。下に示すような場合にAとB列に独立してオートフィルターを設定して、果物を抽出して、CとD列には野菜だけを抽出する。みたいなイメージです。オートフィルターやマクロを用いないやり方で他のやり方でもできる場合は教えて下さい。    A    B      C    D 1  りんご 果物   りんご  果物 2 キャベツ 野菜  キャベツ  野菜 3  イチゴ 果物   イチゴ  果物

  • エクセルで2列に入力された同一データを全て抽出したい

    下の表でA列とB列に入力された「バナナ」を全て、すなわち1,2,3,5行目を抽出をしたいのです。 データ量が1000行を越すため、効率よく抽出する 方法を教えてください。     A    B 1 バナナ  みかん 2 りんご  バナナ 3 バナナ  バナナ 4 いちご  みかん 5 バナナ  いちご

専門家に質問してみよう