• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCELのFor文について)

EXCELのFor文での数値の逆順表示

このQ&Aのポイント
  • EXCELのFor文を使用して、数値の逆順表示を行いたい場合について教えてください。
  • 現在、Kishaku_MinからKishaku_Maxまでの数値を取得するようにしていますが、逆順で取得する方法がわかりません。
  • For文では逆順の取得ができないのでしょうか?VBA初心者なので、ご教授いただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • YUKKER
  • ベストアンサー率44% (74/168)
回答No.1

For i = Kishaku_Max To Kishaku_Min Step -1 //処理 Next としてください。

thunder-sg
質問者

お礼

思い通りの結果が得られました。 ありがとうございます。 まだまだ、修業しないといけませんねー。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • chie65535
  • ベストアンサー率43% (8539/19417)
回答No.4

蛇足な追記。   ANo.2の回答を書いている最中は、まだ誰からも回答が付いていませんでした。   回答を書いている最中、まさか「予想通りのおっちょこちょいな回答者が現れる」とは予想していませんでした。   ですので、ANo.1の回答が「予想通り」だったのは「単なる偶然」であり、他意はありません。もちろん、特定の回答者に対する指摘でもありません。ご了解下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • emsuja
  • ベストアンサー率50% (1036/2059)
回答No.3

セルに入れルン数字を下記の式で取得すればいいのでは? Kishaku_Max - i + 1 こんな感じですね Kishaku_Min = 1  Kishaku_Max = 5 For i = Kishaku_Min To Kishaku_Max Cells(2, i).Value = Kishaku_Max - i + 1 Next i

thunder-sg
質問者

お礼

回答ありがとうございます。 皆さんのおかげでうまく処理することができました。 しかし、こういう系統の質問はレスが早いですねー。 皆様に感謝、感謝です!

全文を見る
すると、全ての回答が全文表示されます。
  • chie65535
  • ベストアンサー率43% (8539/19417)
回答No.2

For i = Kishaku_Min To Kishaku_Max のループの中で、セルに値をセットしている部分はどうなってますか?   たぶん ほげほげ.Value = i って書いてますよね?   これを ほげほげ.Value = i + 10 にしたら、どうなります?   iが1なら11、2なら12、3なら13になりますね?   これは、ループする値が1~5でも、値をセットする部分で「iを元に、計算した値」を使えば、1~5以外の値もセットできるって事を意味してます。   では、iが1なら5、2なら4、3なら3、4なら2、5なら1にするには?   ほげほげ.Value = 6 - i   って書けば良いのです。   なお、おっちょこちょいな回答者が   For i = Kishaku_Max To Kishaku_Min Step -1 にすれば良い。   と回答するかも知れませんが、これでは駄目です。   これでは「実行する順序が変わるだけで、5回やり終わった結果は最初と同じ」なので、元のプログラムと結果は一緒です。

thunder-sg
質問者

お礼

回答ありがとうございます。 おっちょこちょいな回答でうまくいきました。 Kishaku_Maxは5以上の場合もあるし、5以下の場合もあるので、これで行ってみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBA 計算結果の表示方法

    ExcelのVBAでコマンドボタンを押すと以下のようなプログラムを考えています。 '変数宣言 Dim MIN As Integer Dim MAX As Integer Dim i As Integer MIN = CInt(TextBox1.Text) MAX = CInt(TextBox2.Text) 'ループ For i = MIN To MAX If i Like "*3" Or i Like "3*" Or i Mod 3 = 0 Then End If Next i と、ここまでは考えたのですが、結果の表示方法を一つのメッセージボックスで カンマ区切りで表示させる方法が調べてもわかりませんでした。 If i Like....の結果を一つにまとめてそれを表示するのかな。。。? なんて考えておるのですが、皆様のご教授を承りたく思います。 宜しくお願いします。 ※テキストボックス、コマンドボタンはユーザーフォーム上にあります。

  • エクセルのVBAでFor文がわかりません。

    エクセルのマクロでとりあえずデータを 始めは6、7行のデータをクリアし 次は6+7、7+7のデータをクリア その次は6+7*2、7+7*2のデータをクリア とうぐあいにFor文を作りたいのですが 以下のように作るとRowsの部分でデバックが出ます。 どのように修正すればよいのでしょうか? ご教授お願いいたします。 Sub Macro1() Sheets("Sheet1").Select Dim x As Integer Dim y As Integer Dim z As Integer For x = 1 To 304 y = 7 * (x - 1) + 6 z = 7 * (x - 1) + 7 Rows("y:z").Select'この行でデバックとなる Selection.ClearContents Next x End Sub

  • VBE Excelのマクロがわかりません(IF関数)

    エクセルのマクロがわかりません。教えてください 問題は5人の簿記の点数を入力し5人の合計点・最高点・最低点を表示するプログラムを作成する。というものです。 Sub test() Dim boki as integer Dim sum as integer Dim max as integer Dim min as integer For A = 1 to 5 boki = InputBoxx("簿記の点数入力") goukei = goukei + boki ?????? Next A Msgbox"5人の合計点は"&A Msgbox"5人の最高点は"&A Msgbox"5人の最低点は"&A End Sub IF関数を使って??の部分を作るようなのですが、いまいちよく分からないので教えてください。 bokiは簿記 sumは合計 maxは最高 minは最低のことを現してます。

  • ExcelのVBAについて質問です

    【初心者です】 現在独学でExcelのVBAを学んでいるのすが、 数値を入力する箱(= a) を8個作り、その数値を自分で入力したのちに、 For文で簡潔に合計した数値を出力させたいのですが、やり方が分かりません。 Suuchiの数は8個で、それぞれに数値を入力して、出力する流れです。 下記の文までは思いついたのですが「???」に該当するもとのをどのように作成すれば良いのか教えていただけないでしょうか? また、そもそもの書き方が違う場合にも指摘していただけると助かります。 Dim Suuchi(0 To 7) As Integer '数値数 Dim total As Integer '合計値 Dim i As Integer 'カウンタ数値 For i = 0 To 7 Suuchi(i) = ??? total = total + Suuchi(i) Next i If chkチェックボタン.Value Then MsgBox "数値の合計は「" & total & "」です", , "数値合計値" End If

  • For文と配列

    下のFor文でセルに0から9999の数字を入力しようとしたのですが 「forで指定された変数は既に使用されています」というエラーがでます。 Dim i As Integer Dim Num(3) As Integer For Num(0) = 0 To 9 For Num(1) = 0 To 9 For Num(2) = 0 To 9 For Num(3) = 0 To 9 Cells(i, 1) = Num(3) + Num(2) * 10 + Num(1) * 100 + Num(0) * 1000 i = i + 1 Next Num(3) Next Num(2) Next Num(1) Next Num(0) 他には何にも書いていないマクロなので他所で使用しているとも思えないですが うまくゆきません。 続きの作業でNum()を配列として作業したいのでこの形を変えたくありません。 何がいけないのでしょう?

  • Excel 「For … Next」のやり方

    Excel画面のA1~A10を10~1の表示にさせるため、VBAを Sub ***() Worksheets("Sheet1").Activate Cells.Clear Dim i As Integer, n As Integer For i = 10 To 1 Step -1 Cells(i, 1).Value = i Next i End Sub としたのですが、実際に表示するとA1から1~10と1ずつ加算されてしまいます。 マイナス値は-1の表示で可能だといろいろ調べてわかったのですが、実際にやるとうまくいきません。 どこが間違っているのでしょうか? 学習不足ではありますが、よろしくお願いします。

  • エクセル マクロ ループ処理の構文について

    お世話になります。エクセル初心者です。 i < j の関係があるときに、それぞれの数値をfor構文でループを回したいです。 i の数値は外部から入力される前提です。 現在、以下のような構文を考えています(istartとiendは外部から決められた数値とします)が、 この場合、jendはiend + 1とすれば良いのですが、jstartはどのように入力すれば良いでしょうか? 修正箇所を指摘(もしくは全文修正)していただけると、非常に助かります。 よろしくお願いいたします。 Sub test() Dim i As Integer Dim j As Integer Dim istart As Integer Dim iend As Integer Dim jstart As Integer Dim jend As Integer istart = 1 iend = 50 For i = istart To iend For j = jstart To jend '実行したい内容 Next Next End Sub

  • For文を使った九九表の作成

    Visual Basic初心者です。 Visual Studio 2005を使って、九九表を表示させるプロジェクトを作りたいのですが、 For Nextステートメントを使うところまではわかりましたが、 Labelに表示させると繰り返した最終の値(2の段だと、18)しか表示されません。 途中の数字(×1~8まで)を表示させるには、どうすればいいのか教えてください。私の組んだタグは以下の通りです。よろしくお願いします。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a, b, c, d, f, g, h, i, j As Integer For a = 1 To 9 Label1.Text = 1 * a For b = 1 To 9 Label2.Text = 2 * b For c = 1 To 9 Label3.Text = 3 * c For d = 1 To 9 Label4.Text = 4 * d Next Next Next Next End Sub

  • EXCEL VBA の For・・・Next 小数のときに動きがおかし

    EXCEL VBA の For・・・Next 小数のときに動きがおかしい。 <例>  Sub テスト()   Dim i As Single   Dim j As Long   For i = 0.025 To 0.03 Step 0.0025   j = j + 1   Cells(1, j) = i   Next i  End Sub 上記コードを実行すると、セル(1,1)~(1,3) にそれぞれ 0.025、0.0275、0.03 が入るはずです。 しかし、0.03が入らないまま処理が終了します。 デバックすると、 Next i で、iに0.03が設定されたら、    j = j + 1 に戻らず、そのまま終わっています。 シートに表示された0.025、0.0275を数式バーで見るとそれぞれ     0.025000000372529、0.0274999998509884 となっています。 同様にNext i で0.03が設定されたように見えて、実際は0.03よりも少しだけ大きな数値が入ったのでしょうか?(debug.printを使いイミディエイトウインドウに表示させても0.03でしたが) 期待どおりi=0.03でも処理を実行させるにはどうしたらいいのでしょうか? よろしくお願いします。

  • エクセルマクロで定義した関数が動きません

    以前にマクロの記述について教えて頂いた件の続きになります. ご指導頂いたとおりExcelマクロで複素数を扱う関数を下記HPから 標準モジュールにコピペしました.今度は正しくコピーできたと思いますが, 実行するとエラーになります. 標準の組込み関数を用いて「実数」の行列を計算すれば正しく 計算できますが,当然ながら「複素数」は計算できません. この「複素数」を扱う新しく定義した関数が動かない理由, 「End if に対するifブロックがありません」とか 計算結果が「#VALUE!」となってしまうのは何故でしょうか? マクロの記述内容はほとんど理解できないのですが, どなたか助けて頂けませんか! ちなみにエクセルは2016版です. http://www.geocities.jp/tomtomf/denki/AC2/ac2.htm http://www.geocities.jp/tomtomf/denki/AC1/ac1.htm 以下はコピー定義した「 IMMULT」関数と「 IMINVERS」関数のマクロです. Public Function IMMULT(a As Range, b As Range) As Variant Dim r1 As Integer, r2 As Integer, c1 As Integer, c2 As Integer, nn As Integer Dim r As Integer, c As Integer Dim cr As Integer, cc As Integer Dim n As Integer Dim mm() As Variant r1 = a.Rows.Count r2 = b.Rows.Count c1 = a.Columns.Count c2 = b.Columns.Count If (c1 = r2) Then nn = c1 Else Exit Function End If cr = r1 cc = c2 ReDim mm(1 To cr, 1 To cc) For r = 1 To cr For c = 1 To cc mm(r, c) = 0 For n = 1 To nn mm(r, c) = IMSUMa(mm(r, c), IMPRODUCTa(a.Cells(r, n), b.Cells(n, c))) Next Next Next IMMULT = mm End Function Public Function IMINVERS(a As Range) As Variant Dim n As Integer, n1 As Integer, n2 As Integer Dim r1 As Integer, r2 As Integer, c As Integer Dim max As Variant Dim i As Integer Dim m() As Variant Dim inm() As Variant Dim rr As Integer, cc As Integer Dim no As Integer, ex As Variant n1 = a.Rows.Count n2 = a.Columns.Count n = n1 ReDim inm(1 To n1, 1 To n2) For rr = 1 To n1 For cc = 1 To n2 If rr <> cc Then inm(rr, cc) = 0 Else inm(rr, cc) = 1 'End If Next Next ReDim m(1 To n1, 1 To n2) m = a If n1 <> n2 Then IMINVERS = False Exit Function End If For r1 = 1 To n max = m(r1, r1) no = r1 If r1 < n Then For i = r1 + 1 To n If IMABSa(m(i, r1)) > IMABSa(max) Then max = m(i, r1) no = i End If Next If (r1 <> no) Then For i = 1 To n ex = m(r1, i) m(r1, i) = m(no, i) m(no, i) = ex Debug.Print m(r1, i), m(no, i) ex = inm(r1, i) inm(r1, i) = inm(no, i) inm(no, i) = ex Next End If End If max = m(r1, r1) For i = 1 To n m(r1, i) = IMDIVa(m(r1, i), max) inm(r1, i) = IMDIVa(inm(r1, i), max) Next For r2 = 1 To n If r1 <> r2 Then max = m(r2, r1) For i = 1 To n m(r2, i) = IMSUBa(m(r2, i), IMPRODUCTa(m(r1, i), max)) inm(r2, i) = IMSUBa(inm(r2, i), IMPRODUCTa(inm(r1, i), max)) Next End If Next Next IMINVERS = inm End Function

専門家に質問してみよう