[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ならべかえ』 現在 やりたい事
A A 1 青木 1青木 2 鈴木 2鈴木 3 吉村 ⇒ 3吉村 4 青木 5 青木 6 鈴木 上記の様に数の多い順に並べた上、それぞれかぶっているものを一つずつにしたいです。 (まるまるまる)
A列を選択→データ→フィルタ→フィルタオプションの設定→「指定した範囲」「B1」→「重複するレコードは無視する」にチェック 後で、A列を削除
では、いかがでしょうか?
(Ohagi)
全く同じ内容のご質問ですね。同じ方ではないのかな??? (やっちん)
すみません…(>_<) 「数が多い順」を読み落としていました 確認ですが、名前の隣にある数字は「行番号」で、 「数が多い順」は「個数の多い順」でいいのですよね?
A列を削除する前にC列に、=COUNTIF(A:A,B1) などとして個数を表示させ C列を範囲選択→コピー→形式を選択して貼り付け→値貼り付け A列削除→C列基準で並べ替え→C列削除
(Ohagi)
あら・・・衝突・・・ ちょっとだけ手順が違うので、乗せておきます。結果は一緒ですけど。 カウント数がどこかに書いてないと並べ替えようがない。 B2セルに=COUNTIF(A:A,A2)として、下方向へコピー それから、フィルタオプションの設定で重複なしのデータを抽出 数の降順で並べ替え、数の列を削除。 で、どうでしょう? (Hatch) A B 1 名前 数 2 青木 3 3 鈴木 2 4 吉村 1 5 青木 3 6 青木 3 7 鈴木 2
◆こんな方法もありますよ(空白対応していないので、汎用性は低いですが) A B 1 青木 青木 2 鈴木 鈴木 3 吉村 吉村 4 青木 5 青木 6 鈴木
B1=IF(ROW(A1)>SUMPRODUCT(1/COUNTIF($A$1:$A$6,$A$1:$A$6)),"",INDEX(A$1:A$6,MOD(LARGE(INDEX((MATCH(A$1:A$6 ,A$1:A$6,0)=ROW($1:$6))*(COUNTIF(A$1:A$6,A$1:A$6)+(ROW($1:$6)/10^5)),),ROW(A1)),1)*10^5)) ★下にコピー (Maron)
B列に書き出しで作成しています。 (ROUGE) '---- Sub test() Dim tbl, x, i As Long, dic As Object, ky Set dic = CreateObject("Scripting.Dictionary") With Sheets("Sheet1") tbl = .Range("A1").CurrentRegion.Resize(, 1) For i = 1 To UBound(tbl, 1) If Not IsEmpty(tbl(i, 1)) Then If Not dic.exists(tbl(i, 1)) Then dic.Add tbl(i, 1), Array(tbl(i, 1), 1) Else x = dic(tbl(i, 1)) x(1) = x(1) + 1 dic(tbl(i, 1)) = x End If End If Next ReDim tbl(1 To dic.Count, 1 To 2) i = 0 For Each ky In dic.keys i = i + 1 tbl(i, 1) = dic(ky)(0) tbl(i, 2) = dic(ky)(1) Next DQS tbl, 2, 1, UBound(tbl, 1) .Range("B:B").ClearContents .Range("B1").Resize(UBound(tbl, 1), 1).Value = tbl End With Erase tbl: Set dic = Nothing End Sub Private Sub DQS(ByRef tbl, ky As Integer, ByVal tp As Long, ByVal bt As Long) Dim i As Long, j As Long, k As Integer, m As Long, buf i = tp: j = bt: m = (tbl(i, ky) + tbl(j, ky)) \ 2 Do Do While tbl(i, ky) > m i = i + 1 Loop Do While tbl(j, ky) < m j = j - 1 Loop If i >= j Then Exit Do For k = LBound(tbl, 2) To UBound(tbl, 2) buf = tbl(i, k): tbl(i, k) = tbl(j, k): tbl(j, k) = buf Next i = i + 1: j = j - 1 Loop If tp < i - 1 Then DQS tbl, ky, tp, i - 1 If bt > j + 1 Then DQS tbl, ky, j + 1, bt End Sub
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.