[[20040310112229]] 『指定個数以上の同数字を含む数列をチェック』(ローレベル) ページの最後に飛ぶ

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

 

『指定個数以上の同数字を含む数列をチェック』(ローレベル)

[数字がランダムの数列に○個以上の同数字があるかをチェックしたい]

数字がランダムに並んでいる数列で指定個数以上の同数字を含む数列をチェックしたい。

3/8のたらふくさんの質問の+版です。

他のHPは書き込みするには敷居が高く、さまよい歩いてここに辿り着きました。

宜しくご教示下さい。

モニタリングデータのチェックに使用したいのですが。

DATA例と抽出条件

 A_DATA  DATA数字3組(個) 整数6桁(2桁で1個)00〜99

  DATA例 「016547,853321,442681,・・・,」

  抽出条件 数列内の数字が2個以上合致する数列を表示させる。

 B_DATA  DATA数字4組(個) 整数8桁(2桁で1個)00〜99

  DATA例 「01654755,00853321,95442681,・・・・,」

  抽出条件 数列内の数字が3個以上合致する数列を表示させる。

 C_DATA  DATA数字5組(個) 整数10桁(2桁で1個)00〜99

  DATA例 「0165475583,1014008533,9544268166,・・・・・,」

  抽出条件 数列内の数字が4個以上合致する数列を表示させる。

 D_DATA  DATA数字6組(個) 整数12桁(2桁で1個)00〜99

  DATA例 「016547558325,101400853341,954426816699,・・・・・・,」

  抽出条件 数列内の数字が4個以上合致する数列を表示させる。

  ○抽出結果はPrint完了後は削除しますので 別Book Or 別Sheet になっても構いませ
    ん。
  それぞれの抽出結果を先頭数字を対象にした自動ソート(昇順)は可能でしょうか?
  また、抽出数列中の合致数字の色付け方法も教えて頂ければ助かります。
  DATA(数列)は各3,000/回(日)くらいです。


 A列〜D列にデータが入ってるとして、例えばA列の抽出に関しては、
 まず、A列を昇順に並び替えておき、F〜H列はユーザー定義で「00」表示設定。

 F1=LEFT(A1,2)
 G1=MID(A1,3,2)
 H1=RIGHT(A1,2)

 とし、F〜H列全体に数式コピー。 I1には
 =IF(SUM(COUNTIF($F1:$H1,F1),COUNTIF($F1:$H1,G1),COUNTIF($F1:$H1,H1))>3,A1,"")
 とし、I1の数式をI列全体にコピー後、オートフィルタで「空白以外」を選択する。

 B列以降のデータ抽出も同様の手順で。
 私はマクロは使えませんので。
 (show)

 対象データは、文字列として、同一行内で2桁の数字が2個以上存在する場合は、
 その数字の小さい方を表示させるものです。
 D1に
 =TEXT(MIN(IF(COUNTIF(A1:C1,TEXT(ROW($1:$100)-1,"!*00!*"))>1,ROW($1:$100)))-1,"00;;00;")
 として、Ctrl+Shift+Enter。これを下にフィルドラッグものでは、どうでしょう?

   A    B    C   D   
 1 244736 210166 729050	
 2 539203 644925 521885 92
 3 257313 251487 255448 25
 4 102766 154556 649724	
 5 312200 885002 400442 00	
 6 976709 493103 188910 10
                                       (LOOKUP)


早速のご教示有り難う御座います。
ちょっと解りにくい表記となってしまいましたので補充説明をさせて頂きます。

1セルに入るデータ「2数字(桁)を1個とみなす」には同じ数値は有りません。

重複している場合はデータ整形の段階で削除します。

A.B.C.D形式のデータは数字の個数(桁数)こそ違いますが2桁区切りで1個の
数値です。

読み込んだデータを表題のように抽出してチェック出来ればとお知恵拝借をお願いした
ところです。

レス頂いた2件も大変参考になりました。御礼申し上げます。

ローレベルの為、いろいろとお聞かせ下さい。      (ローレベル)


 要領を得ませんので質問します。
 チェックするのは、A列の中で同じ数値がある、ということですか。
 例えばA列に「031951」が2度以上出現するというようなことでしょうか。
 もしそうだとしたら、日々のデータ量を考えるとエクセルよりアクセス処理の方が
 軽くて速いのでは?
 (show)


エクセルなら以下一連の作業をマクロに自動記録するのはどうでしょうか。

ex.)元データを昇順に並び替えし、それぞれのデータ列に「1」を入力した列を挿入

    A:6桁データ
    B:1
    C:8桁データ
    D:1
    E:10桁データ
    F:1
    G:12桁データ
    H:1

それを各々ピポットテーブルにする。
さらにピポットテーブルを値貼り付けでコピーし、オートフィルタのオプションで2以上、3以上、4以上のみを表示させる。

 (らぐ)

 各数列を2桁ずつに分解して、それを各数列で比較し、重複したらその数列を表示させる。
 でしょうか?
 分解して重複した2桁数字に色を付ける、迄、試してみました。
 思いっきり面倒くさくて、作業列をたくさん使います。
 昨夜思いついたのですが、睡魔が.....

              A                              B C D E F G.........
 1  016547,853321,652681
 2  01654755,00853321,65442681
 3  0165475583,1014008533,9544268166
 4  016547558325,101400853341,954426816699

 B1 に =MID(SUBSTITUTE($A1,",",),1,2)
 C1 に =MID(SUBSTITUTE($A1,",",),COLUMN(A1)*2+1,2)
      として右にコピー。
 >DATA例 「016547,853321,442681,・・・,」 の ・・・,が気になります。
 まだまだ数列が続くのでしょうね。
 でもとりあえず、B1から右にコピーした範囲をズルズルと下にコピー。

 条件付き書式 B1から範囲を全て選択して
 条件1 セルの値が 次の値に等しい ="" で パターン 色なし
 条件2 数式が   =COUNTIF($B1:B1,B1)>=2 で パターン 赤
 重複した数字に色がつきます。

 全然方向違いならゴメンナサイ。   (jun53)


(Showさん)並びにレス頂いた方へ
 
解りづらい説明でごめんなさい。

A.B.C.D.のデータの処理はそれぞれ別のシートで行います。
すなわちデータ形式の混在は有りません。

1セル内の数値に重複もありません。
1シート内に読み込んだ同一形式のデータを比較して抽出することが目的です。

ただセル内の数列値がランダムの場合があります。以下に例として

       A      B
 1 082039  203955
 2  183889  061839

上記のように数列値がランダムでも2個(組)が合致しております。

どうすればいいの? ローレベルは狂いそう!!!

助けると思って些細なことでもどんどん教えてください。

                                             合掌

 2

 落ち着いて説明して下さい(笑)
 書いてくれた例

       A      B
 1 082039  203955
 2  183889  061839

 で、答えは何が欲しいのですか?

 >上記のように数列値がランダムでも2個(組)が合致しております。
 ↑も私には未だ意味不明なのですが。   (jun53)


 >上記のように数列値がランダムでも2個(組)が合致しております。

 A1のどの数字とB1のどの数字が、ですか?
 それともA1とA2のどの数字ですか?
 それともA1とB1とA2とB2の中で、どの数字が、ですか?
 上の例だと、どの数字が合致していることになるのですか?
 (らぐ)

 衝突しました。
 >合致しております
 の定義(条件)は数字そのものではなく、長さ(文字数)ですか?
 依然として謎です。   (jun53)


奇々怪々の説明でごめんなさい。

        A        B        C
1    012345    232845   005866
2    233566    568687   456789

この例は A_DATA形式ですが A1の23,45 B1の23,45が合致数値となります。

他のセルには2個合致する数値は有りません。

抽出数列は A1 B1 の数列となります。

つまり A_DATA形式の場合は1つの数列に2個以上(以上ですから3個も含む)

合致する数値を持つ数列を抽出したいんですが。  (ローレベル)


 重複する数字をすべて表示させるものは、このようになると思います。

   A    B    C    D  E   
 1 244736 210166 729050	
 2 539203 644925 521885 92
 3 257313 251487 255448 25 48
 4 102766 154556 649724	
 5 312200 885002 400442 00	
 6 976709 493103 188910 10

 D1に
 =IF(COLUMN(A1)>COUNT(IF(COUNTIF($A1:$C1,TEXT(ROW($1:$99)-1,"!*00!*"))>1,)),"",
 TEXT(SMALL(IF(COUNTIF($A1:$C1,TEXT(ROW($1:$99)-1,"!*00!*"))>1,ROW($1:$99)),
 COLUMN(A1))-1,"00;;00;"))
 として、Ctrl+Shift+Enter。1行の重複個数を5個として、これをH1までフィルドラッグ。
 D1:H1を下にフィルドラッグ。

 重複数値を含むセルを条件付書式で表示させますと、A1:C1以下の該当範囲を選択し、
 書式、条件付書式、条件1を数式がとして、
 その右の箱に =OR(COUNTIF(A1,IF($D1:$H1="","aaaa","*"&$D1:$H1&"*")))として、
 セルパターンの色を 指定するなどされたらどうでしょう?       (LOOKUP)


 LOOKUPさん、すみません。
 D2の92は、B2では2個一組ではないのでは?(64・49・25)
 同様にB3の48も(25・14・87)ではないでしょうか。

 >ローレベルさん、再度条件提示ください。
 (show)

 ご質問の意図するところが、殆ど理解できませんので、推測して書いています。
 私の回答は、例を示していますが、このような意図で書いています。

   A    B    C    D  E   
 1 244736 210166 729050	
 2 539203 644925 521885 92
 3 257313 251487 255448 25 48
 4 102766 154556 649724	
 5 312200 885002 400442 00	
 6 976709 493103 188910 10

 D2に92を表示しているのは、A2に**92**、B2に***92*と2桁の数字が合致しているからです。
 D3、E3は、A3の25****、B3の25****、C3の25****、B3の***48*、C3の****48、を意味しています。
 (LOOKUP)


 そうなんですよね。
 条件が今ひとつ判らない。
 察しますに、48****、**48**、****48 という組合せを検索したいという意味なのでは?
 と思っているところです。
 *48***、***48* は組をまたがるのでは?と思うのですが、真意はどうなんでしょう?
 ローレベルさんの回答を待ちます。
 (show)


 ご教示頂いた皆さん。お手数をお掛けしてます。 
 Showさんのおっしゃるとおり組をまたがる(各セル毎の数列が対象)となります。

  下記の説明にあるように各セル内の数列で2数値以上(1個のDATA数値は整数2桁)
 が一致する数列を抽出したいのです。

          A        B        C
 1    012345    232845   005866
 2    233566    568687   456789

  この場合抽出(表示させたい)数列は2DATA数値以上一致する数列の
      ****             **  **
  A1 の 012345  と B1 の 232845  の数列を抽出(表示)対象としたいのです。
  DATAの形式が整数2桁で1つのDATA数値となっているため検索をかける場合2桁区切
 り 00〜99 での検索と、DATA数値の並びがランダムに出てくるために「どうすれば
 いいの?」です。
 抽出した数列を先頭数字2桁を対象として自動で昇順ソートが出来ればとも思ってい
 ます。
 不明な部分は追加ご質問を下さい。
 ご教示頂いている皆さん。宜しくお願い致します。

 <ローレベル>


 まだ、不明な個所のご説明がありませんが、
 D1に
 =IF(
 COUNT(IF(FREQUENCY(--MID($A1&$B1&$C1,{1,3,5,7,9,11,13,15,17},2),ROW($1:$100)-1)>1,))
 <COLUMN(A1),"",
 TEXT(
 SMALL(IF(FREQUENCY(--MID($A1&$B1&$C1,{1,3,5,7,9,11,13,15,17},2),ROW($1:$100)-1)>1,
 ROW($1:$100)-1),COLUMN(A1)),"00"))
 として、Ctrl+Shift+Enter。これを縦横必要な範囲にフィルドラッグ。
 としますと、対象データをそれぞれ1-2、3-4、5-6桁に区切って比較するという条件を付加して
 抽出できると思います。条件付書式の方は、そのままでしょう。        (LOOKUP) 


 衝突しました。
 (LOOKUP)さんへ

 ご不明なヶ所はココでしょうか?1個のDATA値は整数2桁です。

  LOOKUPさんが前掲でお出ししてくれた 92 はDATA値1個の値です。
                                     ~~~~~~~~~~~~~~~~~~~~
          A        B        C
         ****  ** **
 1    012345    232845   005866
 2    233566    568687   456789

 上の例は各セルに3個のDATA(整数6桁)がランダムに入っている例です。

 この例ではDATA値が2個以上(3個も含まれる)一致している 23.45 を含ん

  でいるセル A-1  B-1  の数列を求めたい(抽出表示させたい)のです。
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 レス戴いた貴重なアドバイスを実践・勉強中ですが引き続きご教示をお願いします。

 <ローレベル> 


 質問ですが、D1他の数式は、そのままで、条件付書式の数式を
 =SUM(COUNTIF($D1:$H1,MID(A1,1,2)),COUNTIF($D1:$H1,MID(A1,3,2)),COUNTIF($D1:$H1,MID(A1,5,2)))>1
 として、書式が実現するところは、お望みのものでしょうか?    (LOOKUP) 


 LOOKUP さんへ
 お忙しいところお手数をおかけします。
 補足説明を致しますのでご教示下さい。
 例として 列 A B C  行 1 2  を示しましたがDATA値の数列は2,000程度です。
 シートの見やすさを考えれば列を増やしたいと思っています。
 抽出表示については不使用セルに抽出表示するべきか、或いはDATA数列が入っている
 セル内の一致DATA値(数字2桁)に色付けをするべきか迷っているところですが元の
 DATAとの照合を考えると元シートはそのままで2個以上一致したDATA値に色付けをし
 た方が見やすいとも考えられます。
 あまり勝手な事を申し上げているとご教示頂けなくなりますので、決め打ちで数式を
 お聞かせ下さい。
 ご教示頂いたものと関数マニュアルで格闘したいと思っています。
 何回ものご丁寧な対応に深謝申し上げます。
 <ローレベル>

 私の質問にご回答いただけませんか?       (LOOKUP)

                       


コメント返信:

[ 一覧(最新更新順) ]


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