SSブログ

エクセル2003の総桁数は256桁しか無い(長さん)

以前、エクセルシートの特定方形領域を
180°回転させるために、
indirect()関数で間接指定する
座標が「文字」で入ったセルを、実行す
ると自動作成する、米マイクロソフトの
16bit時代のインタープリター:
QbasicVer.1.1で読ませて
動作する「ベーシックのプログラム」を
紹介した。一辺702升目まで対応でき、
それ以上は無理な為、「バグが有る状態」
で、参考までに本ブログに載せた。
 米マイクロソフト・オフィスのエクセル
2007が、列最大16384桁だという
イメージが強かったからだ。が調査したら、

小生のWindowsVistaの
エクセルは、エクセル2003で列の最大
は256桁だった。

 その為、256升目までの将棋盤しか、
そもそも使えない事が判った。703升目
以上に対応する、180°盤局面回転機能
は私には、ほぼ不要だったのである。他に、
windows7PCで動作している
米マイクロソフト/オフィス/エクセルも
あり、そのバージョンは調べてないが、私
は余り使ってい無い。
 だから、702升目まで反転する為の、
コントロール文字セルが出来れば、充分で、
個人的にだが、インタープリター
QBasicにベーシックプログラムを
読ませながら実行して実際に、コントロー
ルテキスト文字列を、正しく生成するか
どうかに、意味が有る事が判った。
 そこで前記、「ベーシックプログラム」
を、デバックして、動作するようにした。
 3箇所位つまらないエラーを直した。
100 OPEN "test.txt" FOR OUTPUT AS #1
110 MASU% = 256
120 KETA2%=INT(MASU%/26)
130 SAIGOKT1%=(MASU% MOD 26)
140 IF SAIGOKT1%=0 THEN KETA2%=KETA2%-1
150 '
160 FOR I = MASU% TO 1 STEP -1
170 '
180 IF KETA2%<2 THEN 500
190 IF SAIGOKT1%=0 THEN SAIGOKT1%=SAIGOKT1%+26
200 FOR J=SAIGOKT1% TO 1 STEP -1
210 PRINT #1, CHR$(64 + KETA2%) +CHR$(64 + J)+ LTRIM$(STR$(I)); ",";
220 NEXT J
300 '
310 FOR J=KETA2% TO 2 STEP -1
320 FOR K=26 TO 1 STEP -1
330 PRINT #1, CHR$(63 + J) +CHR$(64 + K)+ LTRIM$(STR$(I)); ",";
340 NEXT K
350 NEXT J
360 '
370 FOR K=26 TO 1 STEP -1
380 PRINT #1,CHR$(64 + K)+ LTRIM$(STR$(I)); ",";
390 NEXT K
400 GOTO 980
490 '
500 IF KETA2%<1 THEN 900
510 IF SAIGOKT1%=0 THEN SAIGOKT1%=SAIGOKT1%+26
520 FOR J=SAIGOKT1% TO 1 STEP -1
530 PRINT #1, CHR$(65) +CHR$(64 + J)+ LTRIM$(STR$(I)); ",";
540 NEXT J
600 '
700 FOR K=26 TO 1 STEP -1
710 PRINT #1,CHR$(64 + K)+ LTRIM$(STR$(I)); ",";
720 NEXT K
730 GOTO 980
800 '
900 'KETA2%=0
905 IF SAIGOKT1%=0 THEN SAIGOKT1%=SAIGOKT1%+26
910 FOR K =SAIGOKT1% TO 1 STEP -1
920 PRINT #1, CHR$(64 + K) + LTRIM$(STR$(I)); ",";
930 NEXT K
940 GOTO 980
950 '
980 PRINT #1, ""
990 NEXT I
1000 END
 上記は、180°回転させたい将棋盤の
升目が、256升目の場合にして有る。別の
升目数でも、一応チェックし36升目のとき
にも、間違った答えは出さ無い事を確かめた。
 なお「N88Basic互換Basicの
説明サイト」によると「日本電気㈱のN88
Basicにも、STR$()関数で生成
する、文字列正整数に先頭半角空白が出来る
ので(LTRIM$()関数が無いので、)
RIGHT$(STR$(),LEN(STR$())-1)
形式でSTR$()部分を置き換える」との
旨、記載されていた。
 LEN()やRIGHT$()は、どの
Basicでも同じなので。マイクロソフト
のQBasicVer.1.1が入手困難な
いし、動作困難なら、前記のここで示した、
ベーシックプログラムのテキスト形式
ファイルで、上記プログラムファイルの中で
LTRIM$(STR$(I))
等は、全部
RIGHT$(STR$(I),LEN(STR$(I))-1)
等に変えると良いだろう。メモ帳に読ませて、
文字列変換すると良い。N88BASICで、
ベーシックプログラムをアスキー(テキスト)
ファイルでマイドキュメントに保存するのは、
SAVE ”ファイル名”,Aコマンドだ。
拡張子はwindowsで.txtに変える。
昔ゲームソフトに、PCを使うときにはお決
まりの、キーボード作業:LOAD”ソフト
名”→RUN→ベーシックプログラムソフト
が正常動作→SAVE ”ソフト名”,A
なので、それを引っかけて「ロードランナー」
というのが有った。OSがMS-DOSどこ
ろか、それも無く、N88BASICだった
からである。(2023/07/25)

nice!(7)  コメント(0)