• ベストアンサー

4桁

4桁の数字の羅列で、A1に1234からA5000までランダムに入れていき、これに重複する数字があるとき となりに、2と表示(3つあるなら、3)。 ここまで、=rand()と =countif($A$1:A$5000$,2)と明記したんですが、 さらに、2つある数字を、リストアップしたいのですが(例:E1からリストアップ) どうすればよいでしょう。 A1     B1 1234   1(重複数字) 1235   1 1236   2 ・・・    ・・・ ・・・     ・・・

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

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

#2です。補足に関して >D5とD6に2がつきました。 なぜか間違いました。この例ではD5、D6です。2度目出現だけを捉えるのが目的です。 >それ以外はN/A表示(エラー)になり空白にできませんか それは判っています。手抜きしてます、と言うより それでわざわざ「E列最終行に出ている数だけの行数分-1行分を下方向に複写する。」と断り書きしています。 必要な複写行数はE列の最下行を見れば数字が出ていますから、操作でやる場合はF列の複写を、そこで打ち止めが出来ると思って。 もし元データ行数分の式を複写するなら =IF(ISERROR(OFFSET($A$1,MATCH(ROW(),$E$1:$E$10,0)-1,0)),"",OFFSET($A$1,MATCH(ROW(),$E$1:$E$10,0)-1,0)) と言う風にしてください。 エラーなら空白にするという常套手段です。

matrix4
質問者

お礼

ありがとうございます。 むずかしいですが、とても参考になります。

その他の回答 (2)

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

もう少し例を増やして丁寧に説明をお願いします。 (例として、A列A1:A10) 1345 1234 1346 1123 1346 1234 1245 1356 2234 として >2つある数字を、リストアップしたいのですが とは 1234 1346 を別列にセットするのか 1234 1234 1346 1346 1234 と別列にセットするのか? >(例:E1からリストアップ) とはE列のE1からにセットすれば良いのか。 (前者とすると) 空き列をD列として D1セルに=IF(COUNTIF($A$1:A1,A1)<>2,"",2)といれて 下へ複写する。 結果はD1:D10は D3が2 D6が2 E列を空き列として(問題ではE列は結果をセットする列ですが、説明の都合上ここを使う) E1に=COUNT($D$1:D1)といれ下に複写する。 結果は 0 0 1 1 1 2 2 2 2 2 F列に =OFFSET($A$1,MATCH(ROW(),$E$1:$E$10,0)-1,0) といれて、E列最終行に出ている数だけの行数分-1行分を 下方向に複写する。 (結果)F1:F2に 1234 1346

matrix4
質問者

補足

ほとんどできましたが、 ただ、 D1セルに=IF(COUNTIF($A$1:A1,A1)<>2,"",2)といれて 下へ複写する。 結果はD1:D10は D3が2 D6が2 ここでやってみたところD5とD6に2がつきました。 後者のほうに、重複がカウントされていますのでそううなるのかと。 あと、=OFFSET($A$1,MATCH(ROW(),$E$1:$E$10,0)-1,0) ですが下へコピーすると重複はでますが、それ以外は N/A表示(エラー)になり空白にできませんか if("","")でうまくいかないみたいですが。

noname#29107
noname#29107
回答No.1

まず条件の確認ですが、2つある数字だけリストアップすればよいのでしょうか?(3以上は無視?) =rand()では4桁の数字にならないし、 =countif($A$1:A$5000$,2)では出現個数もカウントできないと思いますが、正しいのでしょうか? とりあえず関数でやるのはしんどいと思いますので、VBAで考えてみました。 A列はコピー・値貼り付けして、=RAND()のままでは実行しないでください。(=RAND()のままではまともな結果を返しませんし、時間も異様にかかります。) Sub test() Ix = 1 ix2 = 1 Do While Cells(Ix, 1) <> ""   If Cells(Ix, 2) = 2 Then 'もし2個以上にするなら=を>=に変更する。     If Application.WorksheetFunction.CountIf(Range("E:E"), Cells(Ix, 1)) = 0 Then       Cells(ix2, 5) = Cells(Ix, 1)       ix2 = ix2 + 1     End If   End If   Ix = Ix + 1 Loop End Sub あとは、コマンドで実行する方法として、 1)A列B列に表題行をつける 2)オートフィルタでB列が2のデータのみ表示。(2以上にするならオプションで指定) 3)A2から最終行まで選択する。 4)F5キーでセル選択ボタンを押す。可視セルにチェック。OKを押す。 5)編集=>コピーを選ぶ(又はCtrl+Cなど) 6)E1セルを選択。編集=>>貼り付けを選ぶ。 7)オートフィルタを解除する。

matrix4
質問者

お礼

難易度高いですが、ありがとうございます。

関連するQ&A

  • エクセルで3ケタの乱数

    今度くじ引き大会をするのに3ケタの数字を250名ほどに配りたいのですが、それぞれの数字が重複なくかつ各桁数の数字が重複しないで乱数をエクセルで生成する方法を教えてください。(例えば、101,221,199などは除外したいです) RAND,RANDBETWEEN関数を使ってみましたが、重複してしまうし、221などのような各桁で数字が重複してしまうものができてしまうのでうまくいきません。 よろしくお願いします。

  • ランダム関数で任意の桁数のランダム数字を作りたい

    エクセル2000ユーザーです。ランダム関数を使い、重複を許さない5桁のランダム数字を1000個作りたいと思っています。randbetween関数を使おうと思ったのですが、2000では使えないのか、NAMEといったエラー表示がでます。5桁の中は同じ数字がでてきても構いません。例:11295、43634、70676・・・etc。 が、1000個の中では同じ数字が重複しないようにしたいです。 =RIGHT(RAND(),5) のように考えたのですが、他にいい方法はありますでしょうか? マクロやVBAは苦手なので、できれば関数でいいやり方があれば教えてください。

  • エクセル 任意の数字から始まる重複しない乱数

    お世話になります。 エクセル2003/XP 使用です。 RANK関数またはそれに似た利用方法でご教授願いします。 下記ページを参考に、"重複しない乱数”を作成しました。 http://www.relief.jp/itnote/archives/001798.php (ページ中程、▼操作手順:重複しない乱数を作成する 以下の部分) 乱数の最初の数字が1から始まる分には問題なくできるのですが、 乱数の数字を、「任意の数字から始めて」、 「任意の数字で終わる」ようにすることは可能でしょうか? 例えば、下記の例でいうと、 6から始まり10で終わる乱数です。        A列     B列 1行目 / =RAND() / 1-5の範囲でランダムな重複しない乱数 2行目 / =RAND() / 同上 3行目 / =RAND() / 同上 4行目 / =RAND() / 同上 5行目 / =RAND() / 同上 ------------------------------------------------------------ 6行目 / =RAND() / 6-10の範囲でランダムな重複しない乱数 7行目 / =RAND() / 同上 8行目 / =RAND() / 同上 9行目 / =RAND() / 同上 10行目 / =RAND() /同上 (11以下、繰り返し 略) よろしくお願いします。

  • Excel特定の文字列を抽出する関数を教えてください。

    A列に***AAA/2桁の数字***と言う値があります。 *はランダムです。 2桁の数字もランダムです。 AAA/2桁の数字のみを抽出する関数を教えてください。 重複する値は、1つを残して削除したいです。 よろしくお願いします。

  • A~H 4桁 組み合わせパターン 全件リスト

    A, B, C, D, E, F, G, Hのうち4桁(桁数固定, 文字重複可)の組み合わせパターンをExcelなどでリスト化する方法を教えてください。 例 AAAA ABCD

  • エクセルで順列が違う数列の認識はできますか?

    タイトルが分かり辛い表現になってしまいました。 ランダムな四桁の数字がA列に並んでいるとします。 ここでB2に任意の四桁の数字を入力します。 この数字で構成されている四桁の数字が入っているセルを任意の色で塗りつぶすように 条件付き書式を設定したいのですが、どのようにすればいいのでしょうか? 画像の例で言えば1234と打ち込んでますので 「1234」「1243」「1324」「1342」「1423」「1432」 「2134」「2143」「2314」「2341」「2413」「2431」 「3124」「3142」「3214」「3241」「3412」「3421」 「4123」「4132」「4213」「4231」「4312」「4321」 の24つの数字が出てきた所に塗りつぶしを行いたいのです。 B2の数字を変えても反応するようにしたいので 条件に以上の24つを設定する方法ではできません。 エクセルは2010を使っています。 ちなみにA列にはRAND関数を使っています。 宜しくお願いします。

  • エクセルで重複しないランダムな1桁の数

    似たような質問はたくさんあるのですが,どれも今ひとつしっくりこないのであらためて質問します。 エクセルでA1:I1の範囲に1から9の数を重複なしでランダムに表示させたいのですが,よい方法を教えてください。(九九の練習プリント作成のためです。) 現在の知識で=TRUNC(RAND()*9)+1 とすることによって1から9までの整数値をランダムに表示することはできているのですが,これだけだと重複してしまいます。これを修正していただけると助かりますが,別の方法でもかまいません。 よろしくお願いします。

  • 5×5セルの中の数字を左端から右端に昇順に並べる

    どなたかご存知でしたら回答をよろしくお願いします。 【質問】 下図の様に、5×5セルの中に数字が1~99迄重複してランダムに入っています。 これを、A1~E5(左端から右端)まで、昇順に並べる方法が知りたいです。 〇例題   A B C D E  1 05 08 34 12 22 2 07 10 11 20 29 3 80 10 12 17 31 4 08 19 24 90 27 5 02 30 04 09 26 〇実行後  A B C D E  1 02 04  05 07 08 2 08  09  10  10  11 3 12  12  17  19 20 4 22  24  26  27 29 5 30  31 34 80  90 〇注意事項  ・使用するエクセルは2010です。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01) 以上、よろしくお願いします。

  • excel セルの統合 頭のゼロを消さない

    宜しくお願い致します。 【過程】 現在、住所録のサンプルデータを作ろうとしています。 公表するものなので、既存の情報ではないものを用意しなくてはいけません。 そこで、電話番号のセルはRAND関数を使って作ろうとしました。 (1)3文字目まで: 090か080を選ぶ        CHOOSE(RAND()*2+1,"090","080") (2)4文字目以降: 8ケタのランダムの数字を選ぶ    INT(RAND()*100000000) (1)+(2)=CHOOSE(RAND()*2+1,"090","080")&INT(RAND()*100000000) これで携帯電話番号ランダム表示完成!! とおもったのですが、、、、 【問題】 (2)の8ケタ数字の頭が0(ゼロ)を選んでいる場合、 (1)と合算した時に、頭の0を表示してくれないので、桁数が減り、11ケタ未満になってしまうという問題が発生しました。 (例:(2)で00458623と選ばれていると、電話番号080458623 となり、2桁足りなくなります。) どなたか、この問題を解決できる方いらっしゃいましたら教えてください。宜しくお願いします。 そもそもの関数の組み立て方が違うようなら、ぜひご進言宜しくお願いします。

  • カウントの方法を教えて下さい。(再)

    カウントの方法を教えて下さい。(再) 先日回答して頂いて解決しましたが、使っている中で問題が発生しましたの再度質問させて頂きます。 二桁ではなく三桁になった時にはどの様にしたら良いでしょうか? (1)11~51、12~52、13~53・・・110~510・・、112~512(一の位と十の位は月です。) 前回質問した内容は以下の通りですが、 ”Excel2003を使っています。A1~E30のセルに11~51、12~52、13~53・・・の数字がバラバラに入力されています。 この範囲の中から頭の数字が1、2、3、4、5が付く数をカウントしたいのですが、宜しくお願いします。” 前回回答頂いた内容は以下の通りです。 (1)11、12、13・・・((1)グループ) =COUNTIF(A1:E3,"<20")-COUNTIF(A1:E3,"<10") (2)21,22,23・・・((2)グループ) =COUNTIF(A1:E3,"<30")-COUNTIF(A1:E3,"<20") (3)31,32,33・・・((3)グループ) =COUNTIF(A1:E3,"<40")-COUNTIF(A1:E3,"<30") (4)41,42,43・・・((4)グループ) =COUNTIF(A1:E3,"<50")-COUNTIF(A1:E3,"<40") (5)51,52,53・・・((5)グループ) =COUNTIF(A1:E3,"<60")-COUNTIF(A1:E3,"<50") 誠に申し訳有りませんが宜しくお願いします。

専門家に質問してみよう