質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

2回答

904閲覧

二番目に小さい数の求め方について

ko21

総合スコア3

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

1グッド

0クリップ

投稿2022/06/14 07:55

入力された8個の数から、二番目に小さい数をプログラムで求めたいです。最小値は出力されますが、二番目の値は出力されません。u が二番目の値になるつもりで書きました。どこがだめか教えていただきたいです。また、二番目の値を出した人の名前(AAAなど)を(11,2)、(12,2)~に出力されるようにしたいです。複数人いる場合もあるのですが、私のプログラムで対応できるでしょうか。よろしくお願いします。

A = InputBox("AAA") B = InputBox("BBB") C = InputBox("CCC") D = InputBox("DDD") E = InputBox("EEE") F = InputBox("FFF") G = InputBox("GGG") H = InputBox("HHH") Cells(2, 2) = "AAA" Cells(2, 3) = "BBB" Cells(2, 4) = "CCC" Cells(2, 5) = "DDD" Cells(2, 6) = "EEE" Cells(2, 7) = "FFF" Cells(2, 8) = "GGG" Cells(2, 9) = "HHH" Cells(3, 2) = A Cells(3, 3) = B Cells(3, 4) = C Cells(3, 5) = D Cells(3, 6) = E Cells(3, 7) = F Cells(3, 8) = G Cells(3, 9) = H s = Cells(3, 2) For i = 2 To 9 Step 1 t = Cells(3, i) If (s > t) Then s = t End If Next i v = Cells(3, 2) For j = 2 To 9 Step 1 u = Cells(3, j) If (v > u) And (u > t) Then v = u End If Next j Cells(10, 2) = u j = 2 For k = 2 To 9 If Cells(3, k) = u Then Cells(11, j) = Cells(2, k) j = j + 1 End If Next k
hatena19👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/06/14 08:33 編集

複数のアカウントを使うのもやめましょう。通報しますよ。
tatsu99

2022/06/14 09:16

一番小さい数値が4つあった場合、二番目に小さい数値はどうなりますか? AAA=10 BBB=10 CCC=10 DDD=10 EEE=11 FFF=11 GGG=11 HHH=11 のような場合、二番目に小さい数値は何を表示すれば良いのでしょうか?
guest

回答2

0

1番目に小さい値が一人、2番目に小さい値が1人という前提であれば、あなたのプログラムを多少修正すれば、
求める結果が得られるかと思います。
1番目に小さい値が複数人、2番目に小さい値が複数人の場合、どのような表示をするのかが、決まっていませんので、なんとも言えませんが、複数人表示するのであれば、現行のやり方では対応できないでしょう。
全体を昇順にソートして、そこから結果を表示するのが一番簡単かと思います。
複数人対応まで含めて、解決したいなら、まず、複数人の場合、どのように表示するのかを明記しないと、回答者は回答できないかと思います。

投稿2022/06/14 09:37

tatsu99

総合スコア5438

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

最初のforループで最小値sを出してますが、その次のループではそれが使われてません。
s以下の数値の場合は無視して、かつ一番小さな値を求めるようにif文の条件式を書く必要があります

投稿2022/06/14 08:16

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問