- ベストアンサー
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 ・・・ ・・・ ・・・ ・・・
- みんなの回答 (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)) と言う風にしてください。 エラーなら空白にするという常套手段です。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
もう少し例を増やして丁寧に説明をお願いします。 (例として、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
補足
ほとんどできましたが、 ただ、 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("","")でうまくいかないみたいですが。
まず条件の確認ですが、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)オートフィルタを解除する。
お礼
難易度高いですが、ありがとうございます。
お礼
ありがとうございます。 むずかしいですが、とても参考になります。