GO-AHEADの日記

GO-AHEADで出版した書籍の紹介をします

Re4:50歳から始めるラズベリーパイ-8

Re4:50歳から始めるラズベリーパイ

LibreOfficeVBAプログラミング入門

amazon kindleを出版しました。


 5.3 配列を使ったプログラム-3

 乱数をつかって1~10までの数値を発生させて、配列x()に入れて大きいものから順番に並べます。(ソートします)

Option VBAsupport 1 'VBAと互換性

Sub Main

Dim x(10) as Integer 'xを整数型として宣言
Dim i as Integer
Dim j as Integer
Dim t as Integer 'tデータ仮置き用

 FOR i=1 TO 10
   x(i-1)=int(rnd*10+1)'1~10の整数の乱数発生
   Cells(i,1).Value=x(i-1) 'セルに表示
 NEXT i

 FOR i=0 TO 8
   FOR j=i+1 TO 9
     IF(x(j)>x(i)) THEN    'x(j)>x(i)であれば
     t=x(j)                      'tにx(j)の値を入れます
     x(j)=x(i)                   'x(j)とx(i)の値を入れ換えます
     x(i)=t                      'x(i)にtの値を入れます。
    ENDIF
   NEXT j
 NEXT i

 FOR i=0 TO 9
     Cells(i+1,2).Value=x(i) 'セルに表示
 NEXT i

End Sub

計算結果例

f:id:GO-AHEAD:20200324145200p:plain


 

プログラムは、
はじめに
 x(0)のところに最大値を移動します。
次に
 x(0)が最大になったので
 x(1)のところにx(1):2から10までの最大値を移動します。
・・・
これを順に行うと、大きい順に並びます。


ワークシート変数は次のようになります。
Cの列に順番を設定します。Dの列が降順になりました。
FOR i=0 TO 9
 Cells(i+1,4).Value=Application.Large(Range("A1:A10"),Range("C" & (i+1)))
NEXT i

f:id:GO-AHEAD:20200324145218p:plain



昇順に設定するときは次のようになります。
Cの列に順番を設定します。Dの列が昇順になりました。
FOR i=0 TO 9
  Cells(i+1,4).Value=Application.Small(Range("A1:A10"),Range("C" & (i+1)))
NEXT i

f:id:GO-AHEAD:20200324145230p:plain