![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
昔、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ランキング
-
delete[]と、delete演算子の明...
-
Excel vba 配列内の最大値を求...
-
VB2008で数字の桁数を調べる...
-
VB.NET2003 テキストボックスに...
-
JSPの処理の途中で、JavaScript...
-
htmlのfileタグに自動で値を入...
-
ハイフンだけ置換したい。
-
「終了していない文字列型の定...
-
csvファイルを読み込み、該当項...
-
d3.jsを使っての折れ線グラフと...
-
javascript:void(0)とは何でし...
-
JavaScriptでショートカットキ...
-
正整数の半角数字かどうか判定する
-
一定時間ごとの実行
-
gas 全角数字を半角数字に変換
-
テキストファイルの更新日時を取得
-
CGIとJavascriptの違いについて
-
Excelのマクロ一括実行ができな...
-
ラベルの色がかわってくれない
-
JavaScriptで ブラウザの閉じる...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel vba 配列内の最大値を求...
-
VBA 多次元配列のクイックソー...
-
delete[]と、delete演算子の明...
-
どんなオブジェクトでも表示で...
-
VBA セル範囲をVariant変数に代入
-
VB2008で数字の桁数を調べる...
-
JSPの処理の途中で、JavaScript...
-
Vba SelStart、SelLen教えてく...
-
VB.NET2003 テキストボックスに...
-
「終了していない文字列型の定...
-
JavaScriptで ブラウザの閉じる...
-
ASP(VBS) ←→ JavaScript の変数...
-
正整数の半角数字かどうか判定する
-
VBAによる第3、4水準文字の判定...
-
デザイン時のVisible=Falseは実...
-
フォルダを自動で開く
-
初心者です。gulpでコンパイル...
-
if(1){...}とはどういうことで...
-
gas 全角数字を半角数字に変換
-
javascript:void(0)とは何でし...
おすすめ情報