![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
昔、VBAで多次元配列のクイックソートの昇順版を作ったんですが、これの降順版を作成したいと思っているんですが、うまくいきません。どなたか正解を教えて下さい。
pMyLng の1つ目の添字のkeyNum 目の変数を昇順に並び替えるマクロです。
こんな感じで使っています。
↓
ReDim xxx(1 To 2, 1 to 3)
xxx(1,1)="海"
xxx(1,2)="山"
xxx(1,3)="川"
xxx(2,1)=2
xxx(2,2)=1
xxx(2,3)=3
Call DoQuickSortHorizontalMulti(xxx, 2, UBound(xxx, 1), LBound(xxx, 2), UBound(xxx, 2))
Public Sub DoQuickSortHorizontalMulti(ByRef pMyLng As Variant, ByVal keyNum As Long, ByVal xLngMax As Long, ByVal pLngMin As Long, ByVal pLngMax As Long)
Dim i As Long
Dim j As Long
Dim k As Long
Dim BaseNum As Long
Dim BaseVal() As Variant
Dim Buf() As Variant
ReDim BaseVal(1 To xLngMax)
ReDim Buf(1 To xLngMax)
If pLngMin >= pLngMax Then
Exit Sub
Else
BaseNum = (pLngMin + pLngMax) \ 2
For k = 1 To xLngMax
BaseVal(k) = pMyLng(k, BaseNum)
Next k
For k = 1 To xLngMax
pMyLng(k, BaseNum) = pMyLng(k, pLngMin)
Next k
i = pLngMin
For j = pLngMin + 1 To pLngMax
If pMyLng(keyNum, j) < BaseVal(keyNum) Then
i = i + 1
For k = 1 To xLngMax
Buf(k) = pMyLng(k, i)
Next k
For k = 1 To xLngMax
pMyLng(k, i) = pMyLng(k, j)
pMyLng(k, j) = Buf(k)
Next k
End If
Next
For k = 1 To xLngMax
pMyLng(k, pLngMin) = pMyLng(k, i)
pMyLng(k, i) = BaseVal(k)
Next k
Call DoQuickSortHorizontalMulti(pMyLng, keyNum, xLngMax, pLngMin, i - 1)
Call DoQuickSortHorizontalMulti(pMyLng, keyNum, xLngMax, i + 1, pLngMax)
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) excelvbaのwithについて 4 2022/12/19 16:51
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB2008で数字の桁数を調べる...
-
delete[]と、delete演算子の明...
-
JSPの処理の途中で、JavaScript...
-
VB.NET2003 テキストボックスに...
-
if(1){...}とはどういうことで...
-
あるurlが存在する(?)かどう...
-
ページを一回だけリロードさせ...
-
PowerPointで時計表示
-
javascriptからサーバサイドの...
-
PHPができればJavaScriptは...
-
ステップ実行ででは出ないエラ...
-
エクセルVBA/ Formatで文字列が...
-
Schemeでのリスト操作
-
初心者です。gulpでコンパイル...
-
Access VBAで、数字だけをチェ...
-
星型評価スターレーティングの...
-
onload onunload onbeforeunloa...
-
動的ファイルの最終更新日を取...
-
Javascriptエラーの原因が分か...
-
JavaScriptを使用して、クライ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel vba 配列内の最大値を求...
-
VB2008で数字の桁数を調べる...
-
VBA 多次元配列のクイックソー...
-
delete[]と、delete演算子の明...
-
六角形のマスの作り方
-
VBA セル範囲をVariant変数に代入
-
どんなオブジェクトでも表示で...
-
CollectionとArrayの呼び出し順
-
コードの意味 ("Scripting.Dict...
-
[VB6/VBA] Variant型配列リテラ...
-
JSPの処理の途中で、JavaScript...
-
VB.NET2003 テキストボックスに...
-
JavaScriptで ブラウザの閉じる...
-
「終了していない文字列型の定...
-
gas 全角数字を半角数字に変換
-
if(1){...}とはどういうことで...
-
正整数の半角数字かどうか判定する
-
htmlのfileタグに自動で値を入...
-
Vba SelStart、SelLen教えてく...
-
デザイン時のVisible=Falseは実...
おすすめ情報