No.5ベストアンサー
- 回答日時:
No1です。
2個テストで作ったので試してください。
配列で比較する方法だと配列の数(インデックス)の増減にかかわらず
コードを変更しなくてはいいので、メンテナンスが楽になると思います。
2個目は他の方の回答のワークシート関数と配列を使ったものです。
===============================================
Sub Test1()
Dim x(0 To 2) As Long
Dim i As Integer
Dim lngMax As Long
x(0) = 10
x(1) = 1
x(2) = 5
For i = LBound(x) To UBound(x)
If x(i) > lngMax Then
lngMax = x(i)
End If
Next i
MsgBox "最大値:" & lngMax
End Sub
===============================================
Sub Test2()
Dim x As Variant
Dim i As Integer
Dim lngMax As Long
x = Array(10, 1, 5)
MsgBox "最大値:" & Application.WorksheetFunction.Max(x)
End Sub
No.4
- 回答日時:
質問者のやり方(IF a>b )でやるとすると。
。'-----------------------------------
Sub 最大数()
Dim a As Long
Dim b As Long
Dim c As Long
Dim Max As Long
a = 10
b = 200
c = 30
Max = a
If b > Max Then
Max = b
ElseIf c > Max Then
Max = c
End If
MsgBox "a,b,cの中で一番大きな数は " & Max & " です"
End Sub
'----------------------------------
以上です。
No.3
- 回答日時:
こんなの最大値を求めるアルゴリズムとして、一番簡単なものだよ。
広く勉強しないと、VBの本を読んでいるだけではダメだという証拠。
エクセルでは
Sub test91()
d = Range("a65536").End(xlUp).Row
m = Cells(1, 1)
For i = 2 To d
If Cells(i, "A") > m Then
m = Cells(i, "A")
End If
Next i
MsgBox m
End Sub
1
ひとつの椅子がある。まずじゃんけんに勝ったほうが,椅子に座るゲームを想像せよ。
勝つとはこの質問の場合は値の大のほうだ。
始めの人が椅子に座る。
次の人が来て、2人でじゃんけんして、次の人が勝てば椅子に座り、負ければ、去る。これを最後の人までつづける。
最後に残った人が答え。
質問の場合はジャンジケンで無く、数の書いたカードを持っていて、見せ合いをして、自分の持っているカードにある数を比較すると考えればよい。
椅子に当たるのが、上記コードのmです。
ジャンケンの判定が
If Cells(i, "A") > m Then
に当たるのです。
普通の本の説明では、数は配列にあるものとして説明して、コードを書いてあります。
Sub test02()
Dim x(10)
'配列に値設定
d = UBound(x)
MsgBox d
m = x(0)
For i = 1 To d
If x(i) > m Then
m = x(i)
End If
Next i
MsgBox m
End Sub
ーーー
最小を求める場合も>が<に変わるだけ。
No.1
- 回答日時:
こんにちは。
質問のような形で変数を使う場合は配列の変数にするとやりやすいと思います。
dim x(0 to 2) as long
x(0) = 1
x(1) = 10
x(2) = 100
等の場合はループで配列の数字を比較していけばいいと思います。
for i = lbound(x) to ubound(x)
ここで比較
next i
このような場合は別途一時格納用の変数を設けるなどして
やるのが一般的かなと思います。
早速のご回答ありがとうございます。
しかし使い方がよくわかりませんでした。
「ここで比較」の部分に、どういうコードを書けばよろしいでしょうか?
上記の例だと、x(2) が最大値になりますが
どうやったらx(2) を求めることができるのでしょうか?
勉強不足で申し訳ございません。
再度ご回答いただければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
-
4
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
5
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
6
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
7
ACCESSのMax(Min)関数使用方法
Access(アクセス)
-
8
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
9
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
10
EXCELで2つの数値のうち大きい方を採択する数式
Excel(エクセル)
-
11
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
12
vba 時間の引き算 例えば 15:00から16:15の間の時間は1時間15分ですが、vbaのコード
Visual Basic(VBA)
-
13
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
14
最も近い数値のあるセルを探す
Excel(エクセル)
-
15
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
16
配列に中で一番小さい値を教えてくれる関数ありませんか/アクセス、VBA
PowerPoint(パワーポイント)
-
17
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
18
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
19
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
20
2つの数値のうち、数値が小さいほうを採用する数式
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
for each の現在の配列ポインタ...
-
VBA 1次元配列を2次元に追加する
-
VB6 配列を初期化したい
-
subの配列引数をoptionalで使う...
-
配列数式って何ですか??
-
《エクセル2000》A列・B列の商...
-
AES暗号にて、AES_set_encrypt_...
-
RPG E仕様書について
-
ListViewで、非表示列って作れ...
-
ファイルの列挙
-
【VBA】配列とWorksheetFunctio...
-
2次元動的配列の第一引数のみを...
-
2つ以上の変数を比較して最大数...
-
テキストボックスの表示
-
VBAで近似曲線の係数取得
-
特定のセル範囲で4文字以上入力...
-
rows関数について。
-
配列で飛び飛びの値を指定して...
-
matlabにおける行列の格納
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
VBA 1次元配列を2次元に追加する
-
VB6 配列を初期化したい
-
特定のセル範囲で4文字以上入力...
-
ListViewで、非表示列って作れ...
-
《エクセル2000》A列・B列の商...
-
配列変数の添字が範囲外ですと...
-
Excel-VBAの配列「Public Const...
-
subの配列引数をoptionalで使う...
-
for each の現在の配列ポインタ...
-
配列を任意の数値で埋める方法
-
Dim は何の略ですか?
-
VBのFunctionで、配列を引数...
-
配列内の内容を全て表示する方法
-
2次元動的配列の第一引数のみを...
-
Excel VBA配列をFunctionに渡す
-
VBA Match関数の限界
-
Array配列の末尾に追加したい。
-
AES暗号にて、AES_set_encrypt_...
おすすめ情報