No.1
- 回答日時:
まずはバブルソートについて検索だ
http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%96% …
バブルソートの意味を十分理解したらプログラミングなのだが
>?とセル?の意味もよくわかりません
課題と銘打っているからには授業か何かで出されたのですよね?
型宣言はVBの初歩の初歩、セルに関してはExcelの基本なんですが
授業で習っていませんか?
プログラムの動作としては
一定領域内の最初のセルと次のセルの数値を比較して
最初のセル>次のセルの場合はそのセルの入れ替えを行う
同様に領域内のすべてのセルに対し比較入れ替えが終了したら
再度領域の先頭から比較入れ替えを繰り返し
領域の最後まで比較しても入れ替えが行われなかった時点で終了
という流れなんですが
課題として提出されたものの丸投げはこのサイトの主旨に反しているため、ヒントまたはご自身で制作したコードの添削以外回答が出るかな?
No.3
- 回答日時:
回答を書きますけど、突っ込まれて絶句しないようにネ。
Sub バブルソート()
Dim G&, V&, I&, J&, K&
ReDim B(4) As Long
'始めに値を配列に格納する
For I = 1 To 5
B(I - 1) = Cells(1, I)
Next
G = 1 '途中経過を表示すべき行
For I = 0 To 3 '個数より1個少なく指定
For J = I + 1 To 4 '現在位置から終端まで検査
If B(I) > B(J) Then '大小関係が逆か調べる
V = B(J) '入れ替える
B(J) = B(I)
B(I) = V
G = G + 1 '行位置を更新
For K = 1 To 5 '途中経過を表示
Cells(G, K) = B(K - 1)
Next
End If
Next
Next
End Sub
No.4ベストアンサー
- 回答日時:
>VBでの
セル?という言葉が出ているのでエクセルVBAでしょう。VBと核になる点(文法など)は同じですが、全体では別物なので正確に書いておくこと。
>型宣言?
プログラム言語でプログラムするとき、データは一旦変数という記憶領域に蓄えます。
そのデータ性格や記憶域の長さを決めるのが、型宣言です。ーー>データ型を宣言する
VBAはVB6に当たるので、Googleででも「VB 型宣言」で照会すると沢山解説が有るが、
http://hanatyan.sakura.ne.jp/vbhlp/hensu.htm
の変数の型の種類などを読むこと。
質問者の今の情況では、整数型と文字列型を使う例題が多いだろう。
>バブルソート
Googleでも「バブルソート」で照会して記事を読むこと。バブルは水の泡のことで、泡は水中の下のほうに発生すると上に浮かび上がってくる。このイメージから命名されている。
http://aitech.ac.jp/~koikelab/webp/vba/vba_9.html
など
この隣接(セル)交換法でやってみる。
エクセルのシートにA1:A5に
9
6
7
1
2
があるとすると、隣接交換法であるから1行目と2行目を比較して、小さいほうを上行に持っていく。次に2行目と3行目を比較するが、2行目は置き換わった後のデータである場合もある。
それに並べ替え完了をどう理解するかも初心者には難しい。
一回下行まで行くと1つの最大値が決ると理解すると良い。
上記のWEBの下から最大値が確定していく様を見て考えてください。
あまりなれない課題でミス無きを祈るが
Sub test01()
j = 1
k = 4
p1:
For i = 1 To k
Range(Cells(1, j), Cells(5, j)).Copy Range(Cells(1, j + 1), Cells(5, j + 1))
j = j + 1
If Cells(i, j) < Cells(i + 1, j) Then
'そのまま
Else
'Cells(i, j) > Cells(i + 1, j)
w = Cells(i, j) '大
Cells(i, j) = Cells(i + 1, j) '小を上に
Cells(i + 1, j) = w '大を下に
End If
Next i
k = k - 1
If k = 0 Then
Exit Sub
End If
GoTo p1
End Sub
Goto文を使わないのが普通らしいが、繰り返しの仕組みのステートメントを使わないためにあえて使った。
ーー
途中経過(上記実行結果)
エクセルシート
96666666111
69777711622
77911172266
11192227777
22229999999
9確定7確定6確定2確定
>途中の過程もシート上に
先生は理解のために言ったのだろうが、エクセルVBAをよく知ってないとうまく行かないし、簡単な課題ではないし、バブルソートの理解とは別の技法だと思う。
バブルソートの考えやコードが霞んでしまうと思うが、上記には組み込んだので判りにくくなっている 部分があるだろう。
ーーーー
エクセルでやるのは、入力や途中経過や最終結果出力を記録出来て見やすいが、VBAの知識が少し要るということ。
この回答へのお礼
お礼日時:2010/09/03 19:15
最終的には知人に聞いて課題を提出しましたが、非常に丁寧に答えていただいたのでベストアンサーとさせていただきます。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのソート方法について 1 2023/01/13 00:01
- 教育・文化 自分で解いた答を書かずに、「答教えて」「解き方教えて」の質問は、全面禁止した方がいいのでは? 13 2022/06/08 15:26
- その他(悩み相談・人生相談) 無気力、やる気がなくて、課題が出来ません。 3 2023/05/24 09:18
- 中学校 中2、宿題の意味がわからないです。 4 2022/08/13 13:42
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- その他(教育・科学・学問) 私は普段本も読まず学生時代読書感想文の課題が出てもネットで調べるなどして乗り越えてきました。 文を要 5 2022/09/12 14:36
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- その他(メンタルヘルス) 自分で考える系の課題ができません、、。ワークの何ページをやれという課題ならできますが、本で調べて論文 2 2022/10/08 20:44
- 父親・母親 長期実習中の医療学生です。 いつも帰るのが8時前頃で、それからお風呂、ご飯、課題をし、課題が終わるの 2 2022/07/05 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
【Excel VBA】一番右端セルまで...
-
EXCEL VBA 文中の書式ごと複写...
-
Excel UserForm の表示位置
-
入力規則のリスト選択
-
特定の色のついたセルを削除
-
VBA 複数条件の分岐処理の上手...
-
DataGridViewで指定したセルの...
-
DataGridViewのフォーカス遷移...
-
エクセルのカーソルを非表示に...
-
指定した文字から指定した文字...
-
DataGridViewでグリッド内に線...
-
Rangeの範囲指定限界
-
エクセルの選択範囲のセルの値...
-
Excel VBA 同じ処理を複数回行...
-
エクセルの合計を自動で表示さ...
-
Excel VBA IF文がうまく動作し...
-
Excelのセルから日付情報を取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
VBA 複数条件の分岐処理の上手...
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
EXCEL VBA 文中の書式ごと複写...
-
特定の色のついたセルを削除
-
VBA にて、条件付き書式で背景...
-
VBAでユーザーフォームにセル値...
-
【VBA】写真の貼り付けコードが...
-
【Excel VBA】一番右端セルまで...
-
Excel VBAでCheckboxの名前を変...
-
エクセルの合計を自動で表示さ...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
Excel VBA IF文がうまく動作し...
-
下記のマクロの説明(意味)を...
-
入力規則のリスト選択
-
C# DataGridViewで複数選択した...
-
関数の引数でrangeを指定したとき
おすすめ情報