Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


65959 / 76734 ←次へ | 前へ→

【15341】Re:バブルソート?
発言  ichinose  - 04/6/22(火) 0:25 -

引用なし
パスワード
   ▼たすけてください さん:
皆さん、こんばんは。
解決したと思っていたんですが・・・。


>Sub 練習3()
>For i = 3 To 1 Step -1
> For j = 1 To i
>   If Cells(1, j).Value > Cells(1, (j + 1)).Value Then
>    x = Cells(1, j).Value
>    Cells(1, j).Value = Cells(1, (j + 1)).Value
>    Cells(1, (j + 1)).Value = x
>    End If
>   Next j
> Next i
>End Sub
>の説明をしなければならないのですが意味がチンプンカンプンです。
>ほんとうにピンチです。おしえてください。御願いします。
このソートは(上記のコードを例に取ると)、

小さい数〜大きい数の順で並べるロジックなんですが、


>  For i = 3 To 1 Step -1
   のiの値が3のときのつまり最初の繰り返し処理を考えましょう。
   
>   For j = 1 To i
>    If Cells(1, j).Value > Cells(1, (j + 1)).Value Then
>      x = Cells(1, j).Value
>      Cells(1, j).Value = Cells(1, (j + 1)).Value
>      Cells(1, (j + 1)).Value = x
>      End If
>    Next j

この内側のFor〜Next文を考えましょう。
i=3
ですから、

 For j = 1 To 3
   If Cells(1, j).Value > Cells(1, (j + 1)).Value Then
    x = Cells(1, j).Value
    Cells(1, j).Value = Cells(1, (j + 1)).Value
    Cells(1, (j + 1)).Value = x
    End If
   Next j

ということになりますね?
ループは、3回繰り返しますが、
その間に
A1とB1を比較 1回目
B1とC1を比較 2回目
C1とD1を比較 3回目

という処理をしている事を理解して下さい。

そして、この処理により、セルA1〜D1の中で一番大きい値が
D1にセットされます。

これがi=3 の時に行う処理なんです。つまり、

・4つの値の中で一番大きい値を最後の入れ物に入れる


では、


>  For i = 3 To 1 Step -1
   のiの値が2のときのは?
 内側のFor文を書き換えると

 For j = 1 To 2
   If Cells(1, j).Value > Cells(1, (j + 1)).Value Then
    x = Cells(1, j).Value
    Cells(1, j).Value = Cells(1, (j + 1)).Value
    Cells(1, (j + 1)).Value = x
    End If
   Next j

ループは、2回繰り返しますが、
その間に
A1とB1を比較 1回目
B1とC1を比較 2回目

これは、一番大きい値を除いた3つ値から一番大きい値をC1にセットします。
つまり、A1〜D1の中で2番目に大きい値をC1にセットする処理です。

同様に
i=1のときは、
A1〜D1の中で3番目に大きい値をB1にセットする処理です。

当然ですが、B1が決まれば、A1は自ずと決まりますよね?


と言うように
A1〜D1の中で一番大きい値から2番目、3番目と大きい順に値をセットしていく
ロジックなんです。

後は、iの値が3〜1になる間にセルの値の移動を
紙に書くなどして確認してみて下さい。
あっ、Excel使ってるんだから、2行目、3行目に書いていってみて下さい。
2 hits

【15322】間違いを探してください。 たすけてください 04/6/21(月) 19:44 質問
【15324】Re:間違いを探してください。 しん 04/6/21(月) 19:56 回答
【15325】Re:間違いを探してください。 かみちゃん 04/6/21(月) 19:58 発言
【15327】Re:間違いを探してください。 たすけてください 04/6/21(月) 20:07 質問
【15328】Re:間違いを探してください。 かみちゃん 04/6/21(月) 20:10 発言
【15330】Re:間違いを探してください。 たすけてください 04/6/21(月) 20:15 質問
【15331】Re:バブルソート? かみちゃん 04/6/21(月) 20:28 回答
【15332】Re:バブルソート? たすけてください 04/6/21(月) 20:37 質問
【15334】Re:バブルソート? かみちゃん 04/6/21(月) 20:51 回答
【15335】Re:バブルソート? たすけてください 04/6/21(月) 20:58 質問
【15336】Re:バブルソート? かみちゃん 04/6/21(月) 21:08 回答
【15337】Re:バブルソート? たすけてください 04/6/21(月) 23:31 質問
【15339】Re:バブルソート? かみちゃん 04/6/22(火) 0:15 回答
【15341】Re:バブルソート? ichinose 04/6/22(火) 0:25 発言
【15329】Re:間違いを探してください。 ichinose 04/6/21(月) 20:15 回答

65959 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free