- 締切済み
EXCEL、ランダム表示の発展系?
EXCELのSheet1には A列にサイトタイトル、B列にURL、C列にカテゴリのデータがあるとします。 そして、D列には「=IF(B2="","",RAND())」このようなランダムの関数があります。 また、Sheet2のA列には =IF(ROW(A1)>COUNT(Sheet1!$D:$D),"",INDEX(Sheet1!$A:$B,MATCH(LARGE(Sheet1!$D$2:INDIRECT("Sheet1!D"&COUNT(Sheet1!$D:$D)+1),ROW(A1)),Sheet1!$D:$D,0),COLUMN(A1))) B列には =IF(ROW(B1)>COUNT(Sheet1!$D:$D),"",INDEX(Sheet1!$A:$B,MATCH(LARGE(Sheet1!$D$2:INDIRECT("Sheet1!D"&COUNT(Sheet1!$D:$D)+1),ROW(B1)),Sheet1!$D:$D,0),COLUMN(B1))) がA2,B2~A6,B6の5行に書かれています。 すると、Sheet2のA2,B2~A6,B6にはランダムに表示されます。 (以前教えてもらった方法です) そこで今回の質問ですが2つあります。 1つ目は、C列のカテゴリを指定して、その中からランダムに表示させたい。 2つ目は、同じドメインは表示しないようにしたい。 ちょっと、分かり難いかもしれませんが、このようにするにはどうすればいいでしょうか? 恐れ入りますが、教えていただけないでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kagakusuki
- ベストアンサー率51% (2610/5101)
>、「同じドメインは表示しないようにする」これがどうも上手くいかないようです。 申し訳御座いません、少々考え方を間違えていた処が御座いましたので、ANo.1の「同じドメインは表示しないようにしたい場合」と「同じドメインは表示しないようにした上で、C列のカテゴリを指定して、その中からランダムに表示させる場合」の関数は忘れて下さい。 ●同じドメインは表示しない様にした上で、ランダムに表示させる場合 まず、Sheet1のD2セルに次の関数を入力してから、Sheet1のD2セルをコピーして、Sheet1のD3以下に貼り付けて下さい。 =IF(ISNUMBER(FIND("@",$B2)),RAND(),"") 次に、Sheet1のI1セルに次の関数を入力して下さい。 =IF(ROWS($1:1)>COUNT($D:$D),"",IF(ISNUMBER(FIND("@",INDEX($B:$B,MATCH(LARGE($D:$D,ROWS($1:1)),$D:$D,0)))),REPLACE(INDEX($B:$B,MATCH(LARGE($D:$D,ROWS($1:1)),$D:$D,0)),1,FIND("@",INDEX($B:$B,MATCH(LARGE($D:$D,ROWS($1:1)),$D:$D,0))),),"")) 次に、Sheet1のJ1セルに次の関数を入力して下さい。 =IF(OR($I1="",COUNTIF($I$1:$I1,$I1)>1),"",LARGE($D:$D,ROWS($1:1))) 次に、Sheet1のI1~J1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。 次に、Sheet2のA2セルに入力する関数を、次の様に変更してから、Sheet2のA2セルをコピーして、Sheet2のA2~「B列の最下段のセル」の範囲に貼り付けて下さい。 =IF(ROWS($2:2)>COUNT(Sheet1!$J:$J),"",INDEX(Sheet1!A:A,MATCH(LARGE(Sheet1!$J:$J,ROWS($2:2)),Sheet1!$D:$D,0))) ●同じドメインは表示しないようにした上で、C列のカテゴリを指定して、その中からランダムに表示させる場合 今仮に、指定するカテゴリー名をSheet1のE1セルに入力するものとします。 まず、Sheet1のE2セルに次の関数を入力してから、Sheet1のE2セルをコピーして、Sheet1のE3以下に貼り付けて下さい。(「C列のカテゴリを指定して、その中からランダムに表示させたい」の場合のSheet1!E2セルと同じ関数) =IF($C2=$E$1,RAND(),"") 次に、Sheet1のG1セルに次の関数を入力して下さい。 =IF(ROWS($1:1)>COUNT($E:$E),"",IF(ISNUMBER(FIND("@",INDEX($B:$B,MATCH(LARGE($E:$E,ROWS($1:1)),$E:$E,0)))),REPLACE(INDEX($B:$B,MATCH(LARGE($E:$E,ROWS($1:1)),$E:$E,0)),1,FIND("@",INDEX($B:$B,MATCH(LARGE($E:$E,ROWS($1:1)),$E:$E,0))),),"")) 次に、Sheet1のH1セルに次の関数を入力して下さい。 =IF(OR($G1="",COUNTIF($G$1:$G1,$G1)>1),"",LARGE($E:$E,ROWS($1:1))) 次に、Sheet1のG1~H1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。 次に、Sheet2のA2セルに入力する関数を、次の様に変更してから、Sheet2のA2セルをコピーして、Sheet2のA2~「B列の最下段のセル」の範囲に貼り付けて下さい。 =IF(ROWS($2:2)>COUNT(Sheet1!$H:$H),"",INDEX(Sheet1!A:A,MATCH(LARGE(Sheet1!$H:$H,ROWS($2:2)),Sheet1!$E:$E,0))) 以上です。
- kagakusuki
- ベストアンサー率51% (2610/5101)
>C列のカテゴリを指定して、その中からランダムに表示させたい。 今仮に、指定するカテゴリー名をSheet1のE1セルに入力するものとします。 まず、Sheet1のE2セルに次の関数を入力してから、Sheet1のE2セルをコピーして、Sheet1のE3以下に貼り付けて下さい。 =IF($C2=$E$1,RAND(),"") 次に、Sheet2のA2セルに入力する関数を、次の様に変更してから、Sheet2のA2セルをコピーして、Sheet2のA2~「B列の最下段のセル」の範囲に貼り付けて下さい。 =IF(ROWS($1:1)>COUNT(Sheet1!$D:$D),"",INDEX(Sheet1!A:A,MATCH(LARGE(Sheet1!$D:$D,ROWS($1:1)),Sheet1!$D:$D,0))) >同じドメインは表示しないようにしたい。 まず、Sheet1のF2セルに次の関数を入力してから、Sheet1のF2セルをコピーして、Sheet1のF3以下に貼り付けて下さい。 =IF(ISNUMBER(FIND("@",$B2)),IF(COUNTIF($B$1:$B2,REPLACE($B2,1,FIND("@",$B2),"*"))=1,RAND(),""),"") 次に、Sheet2のA2セルに入力する関数を、次の様に変更してから、Sheet2のA2セルをコピーして、Sheet2のA2~「B列の最下段のセル」の範囲に貼り付けて下さい。 =IF(ROWS($1:1)>COUNT(Sheet1!$E:$E),"",INDEX(Sheet1!A:A,MATCH(LARGE(Sheet1!$E:$E,ROWS($1:1)),Sheet1!$E:$E,0))) ●同じドメインは表示しないようにした上で、C列のカテゴリを指定して、その中からランダムに表示させる場合 今仮に、指定するカテゴリー名をSheet1のE1セルに入力するものとします。 まず、Sheet1のE2セルに次の関数を入力してから、Sheet1のE2セルをコピーして、Sheet1のE3以下に貼り付けて下さい。(「C列のカテゴリを指定して、その中からランダムに表示させたい」の場合のSheet1!E2セルと同じ関数) =IF($C2=$E$1,RAND(),"") 次に、Sheet1のG2セルに次の関数を入力して下さい。 =IF(ROWS($2:2)>COUNT($E:$E),"",IF(ISNUMBER(FIND("@",INDEX($B:$B,MATCH(LARGE($E:$E,ROWS($2:2)),$E:$E,0)))),REPLACE(INDEX($B:$B,MATCH(LARGE($E:$E,ROWS($2:2)),$E:$E,0)),1,FIND("@",$B2),),"")) 次に、Sheet1のH2セルに次の関数を入力して下さい。 =IF(COUNTIF($G$1:$G2,$G2)=1,LARGE($E:$E,ROWS($2:2)),"") 次に、Sheet1のG2~H2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。 次に、Sheet2のA2セルに入力する関数を、次の様に変更してから、Sheet2のA2セルをコピーして、Sheet2のA2~「B列の最下段のセル」の範囲に貼り付けて下さい。 =IF(ROWS($1:1)>COUNT(Sheet1!$H:$H),"",INDEX(Sheet1!A:A,MATCH(LARGE(Sheet1!$H:$H,ROWS($1:1)),Sheet1!$E:$E,0))) 以上です。
お礼
回答ありがとうございます。 今試したのですが、「C列のカテゴリを指定して、その中からランダムに表示する」これはできました。 しかし、「同じドメインは表示しないようにする」これがどうも上手くいかないようです。 手順どうりにおこなったのですが、Sheet2のA列とB列は何も反映されません。
お礼
回答ありがとうございます。 今、試してみたのですが、やはり、Sheet2には、反応がありませんでした。 私のやり方がまずかったのかもしれません。 もう少し、いろいろ試してみようと思います。