[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『A1からC50の中で同じ数字がない場合 D列に一列に書き出したいです』(わたしも初心者です)
A1からC50の範囲に ランダムに整数が入っています。
この範囲には 同じ数字がいくつか入っているのですが
同じ数字がない値だけを D列に取り出したいです
例えば
A1からC50の範囲の中に 3と4が二つ以上 5と10はひとつしかない場合、D列に 5 10 を取り出したいです。
< 使用 Excel:Excel2010、使用 OS:Windows2000 >
D1セル =IFERROR(AGGREGATE(15,6,A$1:C$50/((COUNTIF(A$1:C$50,A$1:C$50)=1)*(A$1:C$50<>"")),ROW(Z1)),"")
下にコピー
<結果図> 行 _A_ _B_ _C_ _D_ 1 5 2 3 10 3 3 4 4 5 4 6 5 4 7 10
(半平太) 2016/04/25(月) 22:37
>最後のROW(Z1)はどこになりますか?
1行目のセルなら、どこでもいいです。 (E1セルでも、AA1でも・・)
(半平太) 2016/04/25(月) 23:07
下にコピーしましたがD列は空白のままです。
(わたしも初心者です) 2016/04/25(月) 23:11
>下にコピーしましたがD列は空白のままです。
そんなハズないんですけどねぇ・・・
試しに、 1.新しいシートを1枚挿入してください。
2.当該シートの「シート見出し」を右クリックして、「コードの表示」を選ぶと 画面中央に白いエリアが表れますので、そこにマクロコードをコピぺしてください
3.貼り付け終わったらF5キーを押してください。(マクロが実行されます)
4.ALTキーを押しながら、F11キーを押してエクセルに戻ってください。 私が書いた<結果図>と同じになっていると思います。
Private Sub onlyOnce() Rem 生データのセルをまとめて処理 Range("A2,B3").Value = 3 Range("A4,B5:B6").Value = 4 Range("A6").Value = 5 Range("C7").Value = 10
Rem 数式セルをまとめて処理 Range("D1:D8").FormulaR1C1Local = "=IFERROR(AGGREGATE(15,6,R1C[-3]:R50C[-1]/((COUNTIF(R1C[-3]:R50C[-1],R1C[-3]:R50C[-1])=1)*(R1C[-3]:R50C[-1]<>"""")),ROW(RC[22])),"""")" End Sub
(半平太) 2016/04/25(月) 23:27
> 使用 Excel:Excel2010、使用 OS:Windows2000 ↑ 本当にエクセルのバージョンはXL2010ですか?
(半平太) 2016/04/25(月) 23:45
私は、もう寝ますね。
おはようございます。 AGGREGATE関数は2010から追加された関数です。 マクロで良ければ。
Sub test() Dim r Dim i As Long
Range("D:D").ClearContents For Each r In Range("A1:C50") If WorksheetFunction.CountIf(Range("A1:C50"), r) = 1 Then i = i + 1 Cells(i, "D").Value = r End If Next r
End Sub
(sy) 2016/04/26(火) 07:02
並べ替えが入っているが上記はどうだろうか? (ねむねむ) 2016/04/26(火) 07:03
Sub Macro1()
Dim r Dim i As Long Range("AX4:AX5600").ClearContents For Each r In Range("AQ4:AU5600") If WorksheetFunction.CountIf(Range("AQ4:AU5600"), r) = 1 Then i = i + 1 Cells(i, "AX").Value = r End If Next r End Sub
ねむねむさん、おはようございます。
ありがとうございます。
結果は理想通りになりますが、情報が多すぎるのかパソコンのスペックが悪いのか・・・固まりそうになってしまいます。
AQ4:AU5600 のデータを一度に消去したり書き換えたりする際にも時間がかかるのですが並べ替えが入っているからでしょうか?最終的には並べ替えもしたいので結果はとても理想的で残念です。
並べ替えが入っていない関数はありますか?
(わたしも初心者です) 2016/04/26(火) 08:30
ワンプッシュで出来るのも理想ですが処理速度が遅くなるので並べ替えは手でやろうと思っていましたが マクロならすんなり処理してくれるでしょうか。
(わたしも初心者です) 2016/04/26(火) 08:45
AX4から書き出す方法がわかりません。
(わたしも初心者です) 2016/04/26(火) 08:47
リンク先の式で時間がかかる原因は並べ替えではなく配列計算のためなので並べ替えなしにしても計算時間は変わらない。
最初の質問のA1:C50の範囲程度であれば気にならないとは思うが、範囲が広くなればなるほど時間が かかるようになるので(並べ替え有り無しにかかわらず)マクロで進めたほうがいいとおもう。 (ねむねむ) 2016/04/26(火) 08:52
>時間がかかる これ速いと思うけど... Sub test() Dim a, e Columns("ax").ClearContents a = [aq4:au5600].Value With CreateObject("Scripting.Dictionary") For Each e In a If e <> "" Then .Item(e) = .Item(e) + 1 Next For Each e In .keys If .Item(e) > 1 Then .Remove e Next If .Count Then e = .keys End With If IsArray(e) Then With [ax4].Resize(UBound(e) + 1) .Value = Application.Transpose(e) .Sort .Cells(1), 1 End With Else MsgBox "No unique value" End If End Sub (seiya) 2016/04/26(火) 09:35
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.