
いつもお世話になっております
下記のコードを実行すると昇順に並び替えることができるのですが、
降順にするにはどうしたらよいのですか。
DataList.Count To 1 逆にしましたがおなじです
また、条件を増やすことは可能でしょうか。
A列は昇順にB列は降順というように
Dim DataList As Object
Dim x, i As Long
Set DataList = CreateObject("System.Collections.SortedList")
x = Range("B2:d10").Value
For i = LBound(x) To UBound(x)
If DataList.Contains(x(i, 1)) = False Then
DataList.Add x(i, 1), x(i, 2)
End If
Next i
For i = 0 To DataList.Count - 1
Cells(i + 2, 5).Value = DataList.GetKey(i)
Cells(i + 2, 6).Value = DataList.GetByIndex(i)
Next i
Set DataList = Nothing

No.1ベストアンサー
- 回答日時:
基本的にキー・値を追加していく毎に内部でキーを基準に並び替えをするので、書き出す際に逆から取り出す以外にはないでしょうね。
要素数を For .Count -1 To 0 Step -1 を用いて。
>また、条件を増やすことは可能でしょうか。
>A列は昇順にB列は降順というように
これが出来てしまうと本来追加していく際の『対のデータ』が無視されるのでダメでしょ。
VBやC#なら可能かもですし、VBAでやるなら一度それぞれを別の配列に入れて目的通り並び替え改めて作成するって無駄な作業になると思いますよ。
いつ有難うございます。
今まで通りSortでやります。
CreateObject("System.Collections.ArrayList")
で検索したら CreateObject("System.Collections.SortedList")
もヒットしたらなぜかこれもいいなと思いました。
ありがとうございました
No.3
- 回答日時:
No.1です。
使う場面ではSortedListも悪くはないですよ。
降順でキーを揃えるならDictionaryオブジェクトとキー値を格納したArrayListを用い、key はDictionaryオブジェクトではなくSortメソッドを2回かけたArrayListから順次取得してDictionaryオブジェクトに与えてItemを得ますね。
No.2
- 回答日時:
こんにちは
カテゴリがVBAなので、エクセルVBAってことでしょうか?
目的的に考えれば、シート上で並び替えをなさりたいのならRange.Sortメソッドを利用する方がはるかに簡単だと思いますけれど・・・?
https://docs.microsoft.com/ja-jp/office/vba/api/ …
昇順・降順、第二キーなどの設定が可能です。
どうしても、System.Collections.SortedListを使わなければならない理由でもあるのなら別ですけれど・・・
有難うございます。
System.Collections.SortedListではなく
System.Collections.ArrayListでサンプルコード
探していました。なぜか、System.Collections.SortedList
ヒットしました。
興味がでてしまい、つかえるのかな と思い
質問してしまいました。
有難うございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
getParameterとgetInitParamete...
-
Vba ListViewの行挿入に関して...
-
pythonの特殊メソッドの呼ばれ方
-
UTF-8のテキストファイルを開く...
-
VB2005でADDとINSERTの違いは?
-
Javaでブラウザ判定
-
Excel VBA 定数にオブジェクト...
-
VBA Workbooks.open
-
VBAで検索エンジンの自動検索と...
-
Calendarクラスでエラーがでる
-
VBS でのソート処理Excel2003
-
VBスクリプトでテキストファイ...
-
drawStringの座標について
-
StringBufferで
-
女子高に通ってます。 私のクラ...
-
「タイプ初期化子が例外をスロ...
-
恋愛
-
Vectorを要素とするVector
-
「隣の芝生は青く見える」現象...
-
一部の文字列を数値に変える方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 画像を貼り付ける...
-
Excel VBA 定数にオブジェクト...
-
VB.netでメソッドからコントロ...
-
サーブレットコンテキストの意...
-
VBAでの[]
-
Vba ListViewの行挿入に関して...
-
C#のクラスで値渡しをする
-
C#で親にイベントを投げる方法
-
VB.NETでのnothing の意義について
-
javaで、、、
-
Javaでブラウザ判定
-
System.Collections.SortedList
-
VB2005でADDとINSERTの違いは?
-
servletからjspへオブジェクト...
-
mkdirsでフォルダが作成されない
-
String型からlong型への変換は...
-
JSPでのArrayListの表示につい...
-
UTF-8のテキストファイルを開く...
-
エクセルVBA/SpecialCellsで特...
-
PrintFormを使用してのプリント
おすすめ情報