Excel VBA質問箱 IV

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

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


11576 / 13646 ツリー ←次へ | 前へ→

【15338】検索のプログラミング? たすけてください 04/6/21(月) 23:40 質問[未読]
【15340】Re:検索のプログラミング? かみちゃん 04/6/22(火) 0:21 発言[未読]
【15342】Re:検索のプログラミング? ichinose 04/6/22(火) 0:39 発言[未読]
【15361】Re:検索のプログラミング? たすけてください 04/6/22(火) 14:29 質問[未読]
【15364】Re:検索のプログラミング? Asaki 04/6/22(火) 15:01 発言[未読]
【15365】Re:検索のプログラミング? たすけてください 04/6/22(火) 15:09 質問[未読]
【15367】Re:検索のプログラミング? Asaki 04/6/22(火) 15:25 回答[未読]
【15368】Re:検索のプログラミング? IROC 04/6/22(火) 15:56 回答[未読]
【15374】Re:検索のプログラミング? たすけてください 04/6/22(火) 20:35 質問[未読]
【15376】Re:検索のプログラミング? IROC 04/6/22(火) 20:46 回答[未読]
【15377】Re:検索のプログラミング? たすけてください 04/6/22(火) 21:09 質問[未読]
【15378】Re:検索のプログラミング? IROC 04/6/22(火) 21:34 回答[未読]

【15338】検索のプログラミング?
質問  たすけてください  - 04/6/21(月) 23:40 -

引用なし
パスワード
   Sub 練習2の2()

i = 1
j = 7
k = 1
Do While (i <= j)
m = (i + j) / 2
 If 58 > Cells(1, m).Value Then
 i = m + 1
 ElseIf 58 < Cells(1, m).Value Then
 j = m - 1
 Else
 MsgBox (k & "回目に検索")
 Exit Sub
 End If
 k = k + 1
 Loop
 End Sub

このプログラミングの意味がわかりません。おしえてください。

【15340】Re:検索のプログラミング?
発言  かみちゃん  - 04/6/22(火) 0:21 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>このプログラミングの意味がわかりません。おしえてください。

Do...Loop ステートメント
If...Then...Else ステートメント
MsgBox 関数
Sub ステートメント(Exit Sub)
をヘルプ情報で調べてみてください。
どこがわからないのか、もう少し絞り込むことできませんか?

【15342】Re:検索のプログラミング?
発言  ichinose  - 04/6/22(火) 0:39 -

引用なし
パスワード
   ▼たすけてください さん:
こんばんは。

>Sub 練習2の2()
>
>i = 1
>j = 7
>k = 1
>Do While (i <= j)
> m = (i + j) / 2
> If 58 > Cells(1, m).Value Then
> i = m + 1
> ElseIf 58 < Cells(1, m).Value Then
> j = m - 1
> Else
> MsgBox (k & "回目に検索")
> Exit Sub
> End If
> k = k + 1
> Loop
> End Sub
>
>このプログラミングの意味がわかりません。おしえてください。

検索セル範囲は、
セルA1〜G1の範囲ですよね?
A1〜G1に小さい順にデータはソートされていると思います。
これは、「バイナリサーチ」という検索ロジックです。
この "バイナリサーチ"をキーワードにして、検索してみて下さい。
有名なロジックですから、どこかにわかりやすい解説がでているサイトがある
と思います。

【15361】Re:検索のプログラミング?
質問  たすけてください  - 04/6/22(火) 14:29 -

引用なし
パスワード
   ▼ichinose さん:
説明のでているいいサイトがありませんでした。
他にいい情報ありませんでしょうか。

【15364】Re:検索のプログラミング?
発言  Asaki  - 04/6/22(火) 15:01 -

引用なし
パスワード
   こんにちは。

>プログラミングの意味がわかりません。
とは、

ロジック(プログラムの作成方針)が分からない
ロジックはわかるが、何故こんなプログラムになるのか分からない
両方とも分からない

どれでしょう?
ヘルプを見ながら、1行ずつ日本語訳(?)してみては?

【15365】Re:検索のプログラミング?
質問  たすけてください  - 04/6/22(火) 15:09 -

引用なし
パスワード
   ▼Asaki さん:
>こんにちは。
>
>>プログラミングの意味がわかりません。
>とは、
>
>ロジック(プログラムの作成方針)が分からない
>ロジックはわかるが、何故こんなプログラムになるのか分からない
>両方とも分からない
>
>どれでしょう?
>ヘルプを見ながら、1行ずつ日本語訳(?)してみては?

"両方とも分からない"です。

【15367】Re:検索のプログラミング?
回答  Asaki  - 04/6/22(火) 15:25 -

引用なし
パスワード
   >ヘルプを見ながら、1行ずつ日本語訳(?)してみては?

【15368】Re:検索のプログラミング?
回答  IROC  - 04/6/22(火) 15:56 -

引用なし
パスワード
   VBA は、どの程度、理解されていますか?

もし、ヘルプを参考にして、
1行も分からないのだとすれば、
プログラムとは? 
のような基本的なことを
学ばなくてはいけないように思えます。

ちなみに、ヘルプは、VBE上で起動する VBAのヘルプです。
EXCELのヘルプではありません。

【15374】Re:検索のプログラミング?
質問  たすけてください  - 04/6/22(火) 20:35 -

引用なし
パスワード
   Sub 練習2の2()

i = 1
j = 7
k = 1
Do While (i <= j)
m = (i + j) / 2
 If 58 > Cells(1, m).Value Then
 i = m + 1
 ElseIf 58 < Cells(1, m).Value Then
 j = m - 1
 Else
 MsgBox (k & "回目に検索")
 Exit Sub
 End If
 k = k + 1
 Loop
 End Sub

の「k」ってなんでしょうか。


【15376】Re:検索のプログラミング?
回答  IROC  - 04/6/22(火) 20:46 -

引用なし
パスワード
   >i = 1
>j = 7
>k = 1
>の「k」ってなんでしょうか。

これらは、いずれも「変数」です。

ヘルプの「変数の宣言」のページが参考になると思います。

「参考」
http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page4.htm

【15377】Re:検索のプログラミング?
質問  たすけてください  - 04/6/22(火) 21:09 -

引用なし
パスワード
   ▼IROC さん:
(k & "回目に検索")の意味がよくわかりません。

【15378】Re:検索のプログラミング?
回答  IROC  - 04/6/22(火) 21:34 -

引用なし
パスワード
   このコードをF8キーでステップ実行しながら、
ローカルウィンドウで確認してみては如何でしょうか?

そうすれば、各変数の変化が分かるので、
ロジックを理解しやすいかと思います。

しかしこのマクロはセルの値を元に結果を返すので、
このマクロを使う意味のあるシートがあってこそ
実行の意味が分かるのではないのでしょうか?

58 を見つけると、
>  MsgBox (k & "回目に検索")
によりメッセージボックスが表示されます。  

Sub Sample()
Dim i As Long
Dim j As Long
Dim k As Long
Dim m As Double

i = 1
j = 7
k = 1

  Do While (i <= j)
    m = (i + j) / 2
    
      If 58 > Cells(1, m).Value Then
        i = m + 1
      ElseIf 58 < Cells(1, m).Value Then
        j = m - 1
      Else
        MsgBox (k & "回目に検索")
        Exit Sub
      End If
      
    k = k + 1
  Loop
 
End Sub

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