家・車以外で、人生で一番奮発した買い物

たびたび失礼します。

エクセル2000で
色のついたセルだけ非表示にする方法を
教えて下さい。

VBAは素人なのでVBAの場合
捜査方法を詳しくお願いします!

緊急ですー。よろしくお願いいたします

A 回答 (7件)

それほどヒマでもないのですが、乗りかかった船だと思って作ってみました。



まず新しいブックを作成してください(ブック内にSheet1~Sheet3があることを確認、なければ作ってください)

Sheet1のA列にリストAの内容をコピーしてください。
Sheet2のA列にリストBの内容をコピーしてください。

次にメニューバーから「ツール」→「マクロ」→「VisualBasicEditor」を選びます。VisualBasicEditorが別ウィンドウで起動します。VisualBasicEditorのメニューバーの「挿入」→「標準モジュール」を選びます。
画面の右半分に真っ白な広いウィンドウが開きますので、ここに下記の点線内の内容を貼り付けます。

'-----------------------------------------
Sub データ比較()

Dim sa(65536) As Byte
Dim ii, fg, de1, de2 As Integer
Dim c1, c2, c3 As Integer
Dim c As Variant

Set WS1 = Worksheets("Sheet1")
Set WS2 = Worksheets("Sheet2")
Set WS3 = Worksheets("Sheet3")

de1 = WS1.Range("A1").End(xlDown).Row
de2 = WS2.Range("A1").End(xlDown).Row

WS3.Range("A1") = "AB両方"
WS3.Range("B1") = "Aのみ"
WS3.Range("C1") = "Bのみ"
WS3.Range("A2:C65536").ClearContents

For Each c In WS1.Range("A1:A" & de1)
fg = 0
For ii = 0 To de2 - 1
If StrComp(c, WS2.Range("A1").Offset(ii, 0).Value) = 0 Then
WS3.Range("A2").Offset(c1, 0).Value = c
sa(ii) = 1
fg = 1
c1 = c1 + 1
ii = de2
End If
Next
If fg = 0 Then
WS3.Range("A2").Offset(c2, 1).Value = c
c2 = c2 + 1
End If
Next

For ii = 0 To de2 - 1
If sa(ii) = 0 Then
WS3.Range("A2").Offset(c3, 2).Value = _
WS2.Range("A1").Offset(ii, 0).Value
c3 = c3 + 1
End If
Next

End Sub
'-----------------------------------------

貼り付けたら、Excelのほうに戻って、
メニューバーから「ツール」→「マクロ」→「マクロ」を選びます。「マクロ」と書かれたウィンドウが画面上に開きます。「データ比較」という行が反転していることを確認して(反転していないときは、クリックして反転させる)「実行」ボタンを押します。Sheet3に実行結果が書き出されます。

以上です。お望みのような結果が得られましたでしょうか?
(ふぅ、しんど)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました☆

なんとかできました!

また質問することもあると思いますが
よろしくお願い致します(^o^)/

お礼日時:2004/02/03 17:50

#3です。


条件、というのは、色を付けるために使っている条件です。
条件付き書式を使用しているということは、
その設定においてある数値以上であるとか、等しいとかの
条件をつけているのではありませんか?
その条件式を作業列にもってくればできるのではないかと。
例えば「=a1=p1×0.5」という式で条件付けをしているなら、
作業列に=if(a1=p1×0.5,1,0)とすれば
条件を満たしている場合は、「1」となります。
この列をキーにしてオートフィルタで抽出できないか、
ということです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました☆

なんとかできました!

また質問することもあると思いますが
よろしくお願い致します(^o^)/

お礼日時:2004/02/03 17:44

あまりあれこれ言っても puriboo さんをお忙しくさせるだけと思っていましたが、


ちょっとだけ書かせていただきますね。

どこかのシートにSheet1のデータの下にSheet2のデータをつぎ足す形でコピーします。
もちろん見出しは1行目だけにあります。
データは上から隙間なく詰めてあるとします。

これを、名前をキーにして並べ替えます。
そして、名前がA列だとすると
B2に =IF(A1=A2,"",1) として、B1の右下の小さな黒いハンドルをWクリックして下までコピーして下さい。

自分より一つ前の行のセルが同じ行のセルと一致したら「1」が戻ります。
(重複しているという事です)

B列を選択してコピーし、値の貼り付けをします。

今度はB列をキーにして並べ替えます。

あとは1が立っている行を削除します。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました☆

なんとかできました!

また質問することもあると思いますが
よろしくお願い致します(^o^)/

お礼日時:2004/02/03 17:50

> おっしゃるとおり、先程紹介していただいた


> 条件付書式で色をつけました。
> これでは不可能のようですね・・・。

そうですね、お役に立てなくて申し訳ありません。
しかし前のご質問に関数で比較する方が簡単ですというご回答がありますので
参考にされてみてはいかがでしょうか。
応用が利きますよ。

削除したい行、または削除したくない行に関数で○など戻るようにしておいて、
その上でフィルタオプションを使って絞込みをする、という手があります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました☆

なんとかできました!

また質問することもあると思いますが
よろしくお願い致します(^o^)/

お礼日時:2004/02/03 17:44

最終形をどうしたいのか、がいまいち見えてないので


的外れの回答でしたらすみません。

条件付き書式で色をつけているということは、
何らかの条件を満たす行を表示、もしくは非表示したい、
ということですよね?
例えば作業列を作り、その条件を満たすものを「1」
満たさないものを「0」とする計算式(if式)を入力して
それでオートフィルタをかける、という手法では
できませんか?

この回答への補足

説明不足で申し訳ないです。

具体的にしたいことは

リストA、リストB があり
重複するレコードを抽出したい

ということです。

まず重複リストを条件付書式で色をつけました。
そのあと、色をつけたセルを行単位で非表示にしたい
のです。

エクセルに詳しくないのですが、
>その条件を満たすものを「1」
>満たさないものを「0」

たとえば、作業列を作り、隣の列が緑だったら
「1」、
そうじゃなければ「0」という風にするときは
どうしたらよいのでしょう?

それができればたしかにオートフィルタで
できますね。
IF関数で”A1が緑”とかはどうやって指定すれば
良いのでしょうか?

ご回答よろしくお願いいたします

補足日時:2004/02/03 11:44
    • good
    • 0

ANo.#1で書いた者ですが、削除になっていますね。


実はトゲがある書き方をしたつもりは全くなかったのです・・・。

先のサイトでご紹介した
「別シートにある文字列との重複チェック 」にある条件付き書式で色を付けられ、
その後それについて質問されたのかも知れないと思って
先のご質問との関連をお聞きしたまでです。
誤解を招いてしまったようでしたら申し訳ありません。

ご希望の操作はマクロ関数と名前の定義で実現するように思います。
ただ、これは今はヘルプにも載っていない方法ですので
もし puriboo さんがご希望であればご紹介させていただきますがいかがでしょうか。

ただしこれはセルに直接色を付けた場合に限ります。
先にご紹介したサイトで条件付き書式によって付けられた色の場合は
マクロ関数と言う手段が使えません。

というわけで先のご質問との関連をお聞きしたかったのです。

この回答への補足

ご返信ありがとうございます。

おっしゃるとおり、先程紹介していただいた
条件付書式で色をつけました。
これでは不可能のようですね・・・。

うーん。
どうしようか悩んでいます。
うまく2つのリストの重複するものを
抽出したいのですが。

初めからマクロでやったほうが良いのでしょうか?

関数などかなり素人ですので
詳しくレクチャーしてただけると助かります。
よろしくお願いいたします!

補足日時:2004/02/03 11:22
    • good
    • 0

セルだけを非表示にすることは不可能です。


非表示にする場合は行単位か列単位になります。
どちらを使うのか補足してください。

あと、あんまり「急ぎ!」とか「緊急!」とか書くのはどうかと思います。ここの回答者の皆さんは「ボランティア」なのですから、ご自分の都合ばかり声高に主張されるのは、あまり良い印象ではないです。
(#1の方の、すこ~しトゲのある文章も、そのあたりに起因していると思いますよ?)

この回答への補足

焦りのあまり、マナー違反をしてしまい
申し訳ありませんでした。

色のついたセルを含む行単位での
(もしくは色のついてないセルを含まない行)
非表示で構いません。

操作方法ご存知でしたら、よろしくおねが致します。

補足日時:2004/02/03 10:58
    • good
    • 0
この回答へのお礼

☆☆☆お礼投稿になってしまいましたが
補足です☆☆

ちなみに、行がかなりたくさんあるので
それぞれを選択して、非表示にする、ではなく
例えば、選択範囲内で色のついたセルを含む行を
非表示に。
みたいな方法がありましたら、よろしくお願いいたします

お礼日時:2004/02/03 11:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報