[[20061018231154]] 『同じ行データの検索』(ranmal) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『同じ行データの検索』(ranmal)

 いつもお世話になっております。
 ひとつ解決してもらうと、「あ、これも出来るのかな?」なんて、次々に質問が
 湧いてきてしまい・・すみません。m(__)m

 同じセルの同じデータではなく、例えば

  A  B   C   D    E    F

 日付 時間 場所  製品名  内容  結果

 と一行に一件のデータがあり、件数分の行があります。
 実際は列数はもっとたくさんあります。
 複数行の中で、同じ行データがある場合検索する方法はあるでしょうか?
 複数の人でひとつの集計シートに貼り付けをするので、重複データが貼り付けて
 あることが多く、困っています。集計でカウントして、後で内容をみると
 重複データであることがあるんです。

 現在は、データの並べ替えで、日付、時間、場所の順位で並べ替えをして
 目視で確認していますが、とても大変です。
 過去ログを検索してみましたがありませんでした。
 少しでも今の方法より、簡単に検索できる方法があれば教えて下さい。
 お願いいたします。
 【Excel2002,2003】【WindowsXP】


 こんなのはいかがでしょう?
 
1)G2 =A2&B2&C2&D2&E2&F2
2)H2 =COUNTIF($G$2:G2,G2)>1
3)両方とも必要範囲まで下にコピー
4)データ → フィルタ → オートフィルタ
5)H列でフィルタを掛け、TRUE で抽出
6)抽出した列を選択し右クリック → 削除
 
 (キリキ)(〃⌒o⌒)b

 あぁ・・・またキリキさんと衝突。
 大したこと書いてないのでそのままUP。
 以下最初の文章。

 私の想像があたっていれば、出来ます。
 過去ログにも有るはずです。

 過去ログはどの様に検索してみましたかね?
 また、Hitした過去ログと今回ranmalさんがやりたいことでは
 どこが違っていて使えないのですかね?

 ・・・ま、今更 って感じですが。
 (HANA)

 HANAさん、本当にごめん・・・
 
 質問者の方に考えていただくことも必要ですよね。。。
 反省…orz
 
 >・・・ま、今更 って感じですが。
 そんなこと言わずに、これからも宜しくお願いいたします。
 
 (キリキ)(;⌒o⌒)b

 またまた書いてるすきに。全く油断も隙もないんですから。(笑)>キリキさん

 ↓こちらはranmalさんに。
 決して「本当に探したの?」なんて疑っているわけでは無いんですよ。
 沢山有るはずなのに見つけられなかったのなら、たぶん探し方に問題が有るのでしょう。
 あるいは、近いものは見つかったけど応用方法が分からない・・・とか。

 それ(検索&応用)が出来るようになれば
 もっと色んな事が出来るようになるのでは?
 と思っての書込です。

    「重複」で全文検索すると、
     >2)H2 =COUNTIF($G$2:G2,G2)>1
     ここのCOUNTIF関数を使ったものが沢山見れると思います。
     「同一列内でしか見られないな。そうだ、一つの列に纏めよう。」
     >1)G2 =A2&B2&C2&D2&E2&F2
     ここが応用。

 お気を悪くなさらないで下さいね。

 キリキさんもです。タイミングが悪かったです。ごめんなさい。

 (HANA)

 >キリキさんもです。タイミングが悪かったです。ごめんなさい。
 σ(^o^;)は全然^^
 
 (キリキ)(〃⌒o⌒)b

 重複データを除くと言ったらフィルタオプションの設定が思い浮かぶのですが、
 面倒でしょうか?
 Sheet2などの真新しいシートから実行するのですけど・・・
 最近の例は↓が検索されました。   (Hatch)
[[20061014155113]]『同一文字列をソート→それぞれ1列に』


 >お気を悪くなさらないで下さいね。
 とんでもないです。HANAさんのおっしゃる通りなんです。
 いつも検索が下手でそれも悩みの一つですし、応用方法も・・です。

 質問文の中で自分で重複データという言葉を使っていながら「重複」で検索
 思いつかなかったです。

 今回検索したのは「同データ」「同データの検索」「同一データを検索する」です。
 重複で検索した結果よりも、かなり少ない結果でした。
 どれも同じ列内のことだったので、全部の列が一致したものを探す方法ではないので
 駄目だと思ってしまいました。
 キリキさんの
 >2)H2 =COUNTIF($G$2:G2,G2)>1
 の方法もありました。応用ができなかったです。(ーー;)

 応用したキリキさんの方法で出来ました。
 Hatchさんの教えてくれたキリキさんのフィルタオプションでも
 自動マクロで実行できるようにすれば面倒なく出来そうです。

 HANAさん、キリキさん、Hatchさん、いつも本当にありがとうございます。
 これからも、見捨てずに宜しくお願いいたします。
 (ranmal)  

 (続きです) 

 重複データの検索を自動マクロか(自動しか出来ないので)
 条件付き書式で作ろうと思い、挑戦してみましたが、うまく行きません。

 X=A13&B13&C13&D13&E13&F13&G13&H13&I13&J13&K13&L13&M13&N13&O13
 Y=COUNTIF($X$13:X132,X13)>1
 これでY列にに検出結果は出るようになりました。 

 Y列が「TRUE」だったら、その行に色をつけるという条件付き書式を設定した
 つもりで、
 数式が、=$Y$13=TRUEでパターンを黄色にしてみました。
 思っていた通り、黄色にならず、セルに直接「TRUE」と入れると黄色になります。
 以前、HANAさんから、ユーザー定義の説明で、そう見えても実際の値は
 そうではないという勉強をしたばかりなので、分かってはいたのですが・・

 条件付書式に直接
 数式が、=$X$13=COUNTIF($X$13:W132,W13)>1とすると

 TRUEだと色が変わらず、FALSEで黄色になります。
 条件付き書式のかかったセルを選択→Ctrlを押しながら、範囲を選択して
 書式−条件付き書式を選択しても、何故か、コピーもできません。

 あきらめて、自動マクロで、列挿入から数式を入力−数式コピーして検索結果が出る
 までを記録したのですが、データがある分だけ数式をコピーする記録は
 自動では出来ないので、(月によってデータの数が違うため)
 マクロの実行後長い場合は手作業でコピーしなければなりません。

 やっぱり、難しいですね。今日一日こんなことをやっていました。
 自動マクロや条件付書式なしに手作業で数式を入れてコピーしたほうが
 早いみたいです。
 明日(あ、今日だ)仕事なので会社でも、考えて見ます。
 (ranmal)


 気が付いた点をb
 
 Y=COUNTIF($X$13:X132,X13)>1
 こちらが、13行目に入れた数式であれば
 =COUNTIF($X$13:X13,X13)>1
 だと思います。
 それを下にコピーしていくのです。
 
 >数式が、=$Y$13=TRUEでパターンを黄色にしてみました。
 これではどうです?
 
 書式 → 条件付書式
 「セルの値が」「次の値に等しい」「TRUE」
 または、
 H13がアクティブだとして
 「数式が」「=H13=TRUE」
 
 後は、条件付書式ではないですが
 Hatchさんが紹介くださっている、フィルタオプションの設定もいいかと思います^^
 
 頑張ってくださいb
 (キリキ)(〃⌒o⌒)b

 分かりました。
 数式やフィルタオプションのことが分かった(勉強できた)だけで満足だったのですが
 上司が利用することもある表なので一目で重複が分かるようになればと
 あれこれ、考えてみましたが、間違いだらけなんですね。進歩がなくてすみません。 

 深夜の質問に答えていただき、ありがとうございます。
 頑張ります!
 (ranmal)

 Dictionaryの大安売り〜
 データはA13からO列最終行まで並んでると仮定して作っております。
 標準モジュールへコードをコピペして実行
       (弥太郎)
 '-----------------------------
 Sub 色付け一発()
    Dim dic As Object, tbl, x, data
    Dim i As Long, n As integer, adrs As Range
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("sheet1")
        Set adrs = .Range("a13").Resize(.Range("a" & .Rows.Count).End(xlUp).Row - 12, 15)
        adrs.Interior.ColorIndex = xlNone
        tbl = adrs.Value
        ReDim x(1 To UBound(tbl, 1))
        For i = 1 To UBound(tbl, 1)
            data = tbl(i, 1)
            For n = 2 To UBound(tbl, 2)
                data = data & tbl(i, n)
            Next n
            If dic.exists(data) Then
                x(i) = i
            Else
                dic(data) = Empty
                x(i) = Empty
            End If
        Next i
        For i = 1 To adrs.Rows.Count
            If Not IsEmpty(x(i)) Then
                adrs(i, 1).Resize(, UBound(tbl, 2)).Interior.ColorIndex = 6
            End If
        Next i
    End With
    Set dic = Nothing
 End Sub


 弥太郎さん、ありがとうございますっ(>_<) m(__)m
 なんだか、すごく嬉しいけど、申し訳なくて、どう表現して良いか分からないです。

 見事に色がつきました。
 弥太郎さんが説明までつけてくれたので、
 最所は「デバックしますか?」と出て「OK」をしたら、「sheet1」のところが
 黄色くなったので、シートの名前を入れ直し、
 実はデータはW列まであるので、「15」を「20」にしたら、
 思い通りの結果になりました。

 重複の過去ログをみていたので、「12」がO列のことだと分かりました。
 そんなことも知らなかった私です。

 今日会社で自動マクロで、計算式を入力して色をつけるまでを手作業でやり
 VBAでどう記録されているかを参考にマクロを作成してみようとしたのですが
 ・・・(ーー;)

 まさか、作っていただけるとは・・ありがとうございます。
 変換一発と色づけ一発は大事に使用させていただきます。
 変換一発は今日も大活躍でした。

 Excelの勉強やマクロの勉強に良い参考書があったら教えていただきたいですが、
 参考書で勉強うんぬんではなく、脳味噌の違いなんでしょうね。
 このサイトで教えてくださる皆さん、感謝と感心しきりです。
 前にも書きましたが、このサイトを少しずつ見て勉強していこうと思います。

 本当にありがとうございました。
 (ranmal)


 >質問文の中で自分で重複データという言葉を使っていながら
 >「重複」で検索思いつかなかったです。
 『検索ワード!!』と思いついた言葉で検索すると上手く行かないですよ。
 自分が標準人間であると勘違いして、他人に説明する時に使う言葉から
 一般的なものをチョイスして検索をかけると出て来やすくなるかもしれません。

 検索も応用も「超 図解 Excel関数ハンドブック」の読み方も(笑)
 (あ、ヘルプの読み方もですね)「慣れ」が必要な部分が大いにあるので
 こればっかりは慣れて下さい。
 数多くあたって、数多く考えて、数多く読むほどスキルがUPしますよ。
 (今更書くまでの事もなく、当たり前のことですが・・・・)

 >条件付き書式で作ろうと思い、挑戦してみましたが、うまく行きません。
 これは結局上手く行ったのですかね?
 (数式が違っていたのが問題だったのかな?)

 >数式が、=$Y$13=TRUEでパターンを黄色にしてみました。
 >思っていた通り、黄色にならず、セルに直接「TRUE」と入れると黄色になります。
 この時、Y13には確かに「TRUE」と言う文字が出ていましたか?
 もし宜しければ、新しいシートで試してみて下さい。
 A2に「=A1=B1」 B2に条件付き書式 数式が[=$A$2=TRUE]で色を黄色 です。
 私のエクセルではA2がTRUEの時は黄色が、FALSEの時は色無し になりますが。

 >以前、HANAさんから、ユーザー定義の説明で、そう見えても実際の値は
 >そうではないという勉強をしたばかりなので、分かってはいたのですが・・
 「表示」と「演算結果」はまた違うものです。
 例えば、A3に漢数字の二を入力します。(これは文字です)
 A4に条件付き書式 数式が[=$A$3="二"]で色を黄色 とすると
 確かにA3は二なので、セルの色が黄色になります。
 次に、B3に「=A1+B1」として、A1とB1のセルに「1」を入力して下さい。
 B3=2になりますよね。
 B4に条件付き書式 数式が[=$B$3=2]で色を黄色 とすると
 もちろんB3は2なので、セルの色が黄色になります。
 では、B3の表示形式を「その他・漢数字」にしてみて下さい。
 セルの表示は二となりますが
 C4に条件付き書式 数式が[=$B$3="二"]で色を黄色 としても
 セルの色は黄色になりません。(数式を[=$B$3=二]としてもです)
 『二に見えるけど、実際の値は2』 だからです。
 B4は黄色のままでしょ?

 ・・・と言う事なのですが。

 (HANA)

 検索の話が出てきたので、σ(^o^;)の検索パターンをばb
 
 最初に、大きなキーワードで検索
 例えば、今回の場合「重複 同じ」など大まかなもので検索します。
 当然、数十件から数百件の検索結果が出るでしょう。
 そこから、条件を増やしたり、減らしたりするのです。
 検索した結果を見てみると、大きく
 「関数(COUNTIF)など」「オートフィルタ」「フィルタオプション」「マクロ」
 等にわかれてくるでしょう。
 そこで、
 ・条件を増やす場合
  「COUNTIF」を追加したり、マクロを調べたいなら「Sub」などを追加。
 逆に減らしたい場合
 ・条件を減らす場合
  マクロ以外を見たいなら「-Sub」フィルタオプションをはずしたいなら「-フィルタ」など。
 のようにすると、絞込みが出来ます。
 後は出てきた結果を見つつ、キーワードを操作すれば思っていたものに近いものがでてきます。
 
 とは、言いつつ・・・
 割と、決め打ちで検索してしまいますが・・・
 (キリキ)(〃⌒o⌒)b


 もしかして
  >数式が、=$Y$13=TRUEでパターンを黄色にしてみました。
 Y13にTRUEって入ってるんだから=$Y$13="TRUE"
 としたような記憶は無いですかね?

 もしそうなら「演算結果」と「文字列」の違いかな?
 って事はやっぱり
 >そう見えても実際の値はそうではない
 ってこと?

 う〜ん、なんだか悩ましいですね。
 文字列でないTRUEとかFALSEとかは「論理値」なので
 『文字なんだけど値』なんて微妙な位置づけと言う事で
 手を打てますかね。

 (HANA)

 >Y13にTRUEって入ってるんだから=$Y$13="TRUE"
 >としたような記憶は無いですかね?
 ・・・(^_^;)・・はい、記憶あります・・。その通りでした。
 気づいて、、=$Y$13=TRUEに直したのですが、、=$Y$13の式をコピーしたので
 色が変わらなかったのです。TRUEのある列Y250にも、=$Y$13=TRUE の式が
 コピーされていて変わらなかったことに気づかなかったんです。(普通の数式のように
 目で確認できないので・・・・完璧言い訳です(>_<))
 更に、手っ取り早く確認するために、Y13にTRUEと文字を入力したら
 色が黄色になったので、あ〜やっぱりそうなんだ〜・・と思ってしまいました。

 くどい説明で意味わかりづらいですよね。ごめんなさい。

 朝、HANAさんの書き込みを見て、・・もしやと思い、TRUEの行250のの条件書式を
 確認したら、=$Y$13=TRUEになっていました。
 数式を、=$Y13=TRUEにし、コピーしなおしたら、色が変わりました。
 TRUEの行の式を確認したら、=$Y250=TRUEにちゃんとなっていました。
 直ぐに報告したかったのですが、出勤の時間になってしまったので
 遅くなってしまいました。

 弥太郎さんにマクロの式をいただく前にキリキさんの指摘&指導で式を
 見直ししたのですが、実際は=COUNTIF($X$13:X13,X13)>1になっていて
 サイトへの書き込みをY=COUNTIF($X$13:X132,X13)>1と
 誤記(誤コピー?)したみたいです。
 ああ〜あってるのに出来ない。何が悪いんだろうと考え、
 他の行の式を確認しなかったのも×でした。反省しています。
 せっかく、みなさんが助言してくださっているのに申し訳ないです。

 今日は、弥太郎さんのマクロを当月の集計表に貼り付け、当月の進捗状況を
 重複なしの状態で確認できるようにしました。みなさんに教えていただいて
 作成した、集計シートが一緒のBookになっています。

 膨大な過去データが月別にあるので、フィルタオプションで重複なしのデータを
 抽出し、保存しています。それを更に利用してグラフを作成するために・・。

 そして、引っかかっていた条件書式も解決し、本当にすっきりしました。
 さらに深く勉強することが出来ました。

 HANAさん、ありがとうございます。
 キリキさん、検索のご指導まで、ありがとうございます。

 見捨てずに教えていただき感激です。
 キリキさん、HANAさん、弥太郎さん、毎度のことですが
 今回も、大変お世話になりました。m(__)m
 (ranmal)


 確認のためにやったことが確認したことになって無くて
 「でも確認したのにできない!!」と主張して
 よくよく考えると確認したことになってないじゃん
 ・・・って、結構有りますよ。

 でも、色々“やっちまった”方が覚えられて良いと思います。
 (言われたとおりにやって、一発で思った結果が出たら
   それだけで満足してしまうでしょ?)

 >直ぐに報告したかったのですが、・・・遅くなってしまいました。
 色んな事情が有りますからね。急いで報告してもらったのに
 確認するのが遅くなる場合もありますし。
 この辺りは気にしなくて良いと思いますよ。

 頑張って下さいね〜。

 (HANA)

 HANAさん、ありがとうございます。
 頑張ります。
 これからも宜しくお願いいたします。
 (ranmal)

 ranmalさんの問題自体は解決した様なので
 どちらかというとどうでも良いのですが、とりあえず
 >もしそうなら「演算結果」と「文字列」の違いかな?
 この部分、最初の思い違いを引きずったままだったので
 なんだか曖昧な表現になってしまいました。
 そこで、ちょこっとだけ訂正。

 >文字列でないTRUEとかFALSEとかは「論理値」なので
 と上でも書きましたが、
 例えば、文字列の「1」と値の「1」が違うように
 文字列の「TRUE」と値の「TRUE」は違うものです。
 TRUEと言う文字は文字に見えても値であることもあります。
 (と言うよりは値であることの方が多いと思いますが。)

 もう一度例えば、
 Y13=COUNTIF($X$13:X13,X13)>1 であれば、Y13に入ったTRUEは値になるので
 Y13に入った値を調べるときは =Y13=TRUE がTRUEかFALSEか調べることになります。
 Y13=IF(COUNTIF($X$13:X13,X13)>1,"TRUE","FALSE")となっていれば、
 Y13に入ったTRUEは文字になりますので、その文字を調べるときは
 =Y13="TRUE" がTRUEかFALSEかで調べます。

 以上、遅くなりましたが追記でした。
 (HANA)


 HANAさんが、いつも丁寧に詳しく教えてくださるので
 ありがたいです。

 質問して教えていただいたページは全て、まるコピーしています。
 まるコピーしたファイルと、覚えたことをまとめたファイルと2つ作っています。
 「演算結果」と「文字列」の違いも、今度こそ理解したつもりですが、
 また?になりそうな時は、読み返して確認するようにします。
 ありがとうございました。
  (ranmal)


 ごめんなさいね、ここでも言葉が違っているのです。
 「演算結果だから値」と言う文章を書いてしまいましたが
 正しくは、「演算結果が値なら値、文字なら文字」なのです。

 Y13には、ある数式が入っていて「TRUE」と言うものが表示されているとしますよね。
 >Y13=COUNTIF($X$13:X13,X13)>1 であれば
 イコールの右側を演算してTRUEと言う結果を値で表示しています。

 >Y13=IF(COUNTIF($X$13:X13,X13)>1,"TRUE","FALSE")となっていれば、
 IF関数の演算結果のTRUEと言う文字 ~~~~~~ が表示されていることになります。

 どちらも数式を計算してその結果を返したものです。
 でも、文字だったり値だったりするのです。
 基本的に「この文字を表示しなさい」と指定しない限りは
 演算結果は値としても大丈夫だとは思うのですが。
(何か見落としが有るかもしれません。)

 度々訂正してごめんなさい。
 一度で間違いない文章が書けるように精進しますので
 こちらこそ、お付き合い宜しくお願いします。

 (HANA)

 とんでもないです。HANAさん

 手のかかる生徒なので、いかに理解させようかと悩ませてしまっている
 みたいですね。訂正していただく度に、もう一度前の説明文と一緒に
 確認するので、更に注意して覚えることが出来ていると思います。
 私は嬉しいです。

 話はずれてしまいますが、以前「重複」で検索したときに
 たくさん出てきた質問の中で、 今の自分が知りたいことでは無いが
 あとで確認しておこうと記憶に残った質問がありました。
 シート間の一致の質問なのですが、偶然?なのか必然的になのか
 その作業が必要になったので、これから、また検索して勉強しようと思います。

 自分の扱っている、特殊なデータが500ぐらいあるんですが、
 そのデータに関する変更のファイルが送られてきて
 10人が担当しているデータが全て混ざって1つのファイルで 送られてきたのです。

 「検索」では気が遠くなる作業なのですが、
 HANAさんやキリキさんに教えていただき検索したときに
 そういう質問がたくさんあったので、今度は大丈夫です。
 いや・・大丈夫?・・だと思います(努力します)が
 どうしても分からなくなったら、質問させていただきたいと思いますので
 その時は、また、よろしくお願いいたします。m(__)m

 (ranmal)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.