ここから本文です

VBAを勉強中の者です。 エクセルのA1からA10に1から10の数字がバラバラに並んでい...

sat********さん

2014/8/708:59:29

VBAを勉強中の者です。
エクセルのA1からA10に1から10の数字がバラバラに並んでいて、sortメソッドを使わずにB1からB10に降順に並べ替えるという問題がいまいちわかりません。
どなたか教えて

ください。一例を書いてくださるとありがたいです。

閲覧数:
84
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

ja7********さん

2014/8/817:49:05

> A1からA10に1から10の数字がバラバラに並んでいて、
> sortメソッドを使わずにB1からB10に降順に並べ替える

こんな感じで如何でしょうか。

標準モジュールに記述したときは、対象シーをアクティブにして
実行します。
または、使用しているシートのモジュールに記述します。

Sub データ降順ソート()
Dim Ary As Variant
Dim N As Long, M As Long
Dim X As Variant
With Range("A1:A10")
    Ary = .Value
    For N = 1 To UBound(Ary)
        For M = N To UBound(Ary)
            If Ary(N, 1) < Ary(M, 1) Then
                X = Ary(N, 1)
                Ary(N, 1) = Ary(M, 1)
                Ary(M, 1) = X
            End If
        Next M
    Next N
    .Offset(, 1).Value = Ary
End With
End Sub

'-----
> 問題がいまいちわかりません。

これって課題なんですか?
まぁ、それなら 突っ込まれても答えられるように、動作を理解しておいた方が、
いいかと思いますよ。

あと・・・
先に回答されているコードは、正常に動作しないようですが・・・

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

sus********さん

2014/8/709:55:54

>下記はどうでしょう。

Sub Test()
Dim wRow&, wRow1&
Cells(1, 2) = Cells(1, 1)
For wRow = 2 To 10
Cells(wRow, 2) = Cells(wRow, 1)
For wRow1 = wRow To 2 Step -1
If Cells(wRow1, 2) <= Cells(wRow1 - 1, 2) Then Exit For
Cells(wRow1, 2) = Cells(wRow1 - 1, 2)
Cells(wRow1 - 1, 2) = Cells(wRow, 1)
End If
Next
Next
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる