1つの入力フォルダの値を読み込み、3分割をして新しい変数に代入する方法を教えていただきたいです。
読み込むテキスト
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
このように入力されており、これを読み込んで3分割にし、3つの変数に分割したのを入れたいと考えております。
コードはこのように書いています。
j = 0
Do Until ifs.AtEndofStream
¡Rec = ifs.ReadLine
uArray = Split (iRec, “ ,”)
Count = Count + 1
If Count < 3Then
For k = 0 To UBound(uArray)
uArray1(j, k) = uArray(k)
Next
j = j +1
ElseIf Count >2 And Count<6
For k = 0 To UBound(uArray)
uArray2(j, k) = uArray(k)
Next
j = j +1
Endif
Loop
No.4ベストアンサー
- 回答日時:
>テキストファイルの1行目から3行目をuarry1に4行目をuarray2にようにしたいです。
uarry1、uarray2って(Splitあるので2次元)配列ですよね?
>(3,3)にした理由といたしましては、テキストフォルダを3分割にしてそれぞれの123に格納したかったからです。
読み込むテキスト
各行の値を変えて 変数と取得したい変数の値を示した方が良いのでは?
読み込むテキスト
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
この場合27個のデータ
現行コードを見ると、行単位でカンマ区切りの値を配列に代入していると思うのですが
つまり、配列の一時側のカウント変数jを 配列を変える時に初期化0にすれば良いと思いますよ
(j,k)
1~3行目
uArray1(0, 0) uArray1(0, 1) uArray1(0,2) 各値は 1 2 1
uArray1(1, 0) uArray1(1, 1) uArray1(1, 2)
uArray1(2, 0) uArray1(2, 1) uArray1(2, 2)
4~6行目
uArray2(0, 0) uArray2(0, 1) uArray2(0, 2)
uArray2(1, 0) uArray2(1, 1) uArray2(1, 2)
uArray2(2, 0) uArray2(2, 1) uArray2(2, 2)
7~9行目
uArray3(0, 0) uArray3(0, 1) uArray3(0, 2)
uArray3(1, 0) uArray3(1, 1) uArray3(1, 2)
uArray3(2, 0) uArray3(2, 1) uArray3(2, 2)
このように行った所うまく行をうまく分けることができました。初期化がうまく行ってなかったのも、原因だったそうです。
ありがとうございます助かりました!
No.3
- 回答日時:
コードそのままで解釈すると(書き方もそのまま)
Do Until ifs.AtEndofStream
iRec = ifs.ReadLine
uArray = Split(iRec, " ,")
Count = Count + 1
If Count <= 3 Then
If Count = 1 Then j = 0
For k = 0 To UBound(uArray)
uArray1(j, k) = uArray(k)
Next
j = j + 1
End If
If Count >= 4 And Count <= 6 Then
If Count = 4 Then j = 0
For k = 0 To UBound(uArray)
uArray2(j, k) = uArray(k)
Next
j = j + 1
End If
If Count >= 7 And Count <= 9 Then
If Count = 7 Then j = 0
For k = 0 To UBound(uArray)
uArray3(j, k) = uArray(k)
Next
j = j + 1
End If
Loop
0スタートなので(2,2)で良いと思います 3種類全部で27データ
No.2
- 回答日時:
>(3,3)
と言う事はifs.ReadLineは4行で終わりと言う事でしょうか
また、uArray1には16個の値を格納できますが・・
0,0 0,1 0,2 0,3 1,0 1,1 1,2 1,3 2,0 2,1 2,2 2,3 3,0 3,1 3,2 3,3
どのように格納したいのでしょうか?
uArray1~uArray3 だと48個ですね
一応
2次元配列のサイズ変更は2次側のみ可能なので この処理の様に個数が決まっている方を1次側、たぶん決まっていない行数の方を2次側にして、繰り返し処理の中でReDim Preserveステートメントでサイズを変更したりします
また、あらかじめテキストの行数を取得して
Set fso = CreateObject("Scripting.FileSystemObject")
行 = fso.OpenTextFile(fileName:="C:\xx\qa.txt", iomode:=8).Line
Set fso = Nothing
ReDim uArray1(3,行-1)
とかで設定します
#1のサンプル 3パターンを見て確かめてみてください
説明が下手で申し訳ありません。。。
(3,3)にした理由といたしましては、テキストフォルダを3分割にしてそれぞれの123に格納したかったからです。
No.1
- 回答日時:
こんばんは
>3分割にし、3つの変数に分割したのを入れたいと考えております。
2次元配列を作っているようなので >新しい変数 とちょっと違うかも
また、新しい配列のサイズはどうしているのかな?(1次側増やせないので)
ぱっと見 Then とかも無いですし・・最終的にどんな変数を作りたいのか?分かりません・・
下記の様な書き方で参考になるか・・な(サイズの決め方で変わります)
j = 0
Do Until ifs.AtEndofStream
iRec = ifs.ReadLine
uArray = Split(iRec, ",")
uArray1(0, j) = uArray(0)
uArray1(1, j) = uArray(1)
uArray1(2, j) = uArray(2)
j = j + 1
Loop
-----
j = 0
Do Until ifs.AtEndofStream
iRec = ifs.ReadLine
uArray = Split(iRec, ",")
For k = 0 To UBound(uArray)
uArray1(k, j) = uArray(k)
Next
j = j + 1
Loop
----
j = 0
Do Until ifs.AtEndofStream
iRec = ifs.ReadLine
uArray = Split(iRec, ",")
For k = 0 To UBound(uArray)
If k < 3 Then
uArray1(j, k) = uArray(k)
ElseIf k >= 3 And k < 6 Then
uArray2(j, k - 3) = uArray(k)
Next
j = j + 1
End If
Loop
ありがとうございます。
変数としては
uArray1(3,3)
uArray2(3,3)
uArray3(3,3)
のように設定しております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 教育ソフト・学習ソフト vbsで分割した値をそれぞれの変数に 1 2022/10/17 19:52
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Visual Basic(VBA) vbaのループ処理について 6 2022/05/06 15:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
C言語 列挙型(enum型)変数について
-
jsp~jspにhiddenを使って変数...
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
C言語 アロー演算子について質...
-
python の 連鎖代入の文法
-
DataTableの値を変数に代入したい
-
親ウィンドウの情報をインライ...
-
processing エラーで、 "cannot...
-
整数xxxが大き過ぎますというエ...
-
i++と++i ってどう違うのですか?
-
VB6.0での条件文にある#の意味
-
Variant型で宣言してるのにEmpt...
-
VBA 1行で複数の代入を行った...
-
EXCEL/VBA 変数の値をクリップ...
-
var aaa=bbb?cccl:ddd; の意味...
-
プログラミングで変数と関数の...
-
7行テトリスコードで分からな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
EXCEL/VBA 変数の値をクリップ...
-
C言語 列挙型(enum型)変数について
-
テキストボックスの値を変数に...
-
Variant型で宣言してるのにEmpt...
-
[VBS]変数を定数に変換する方法...
-
python の 連鎖代入の文法
-
エラーの意味は? Lvalue req...
-
jsp~jspにhiddenを使って変数...
-
processing エラーで、 "cannot...
-
整数xxxが大き過ぎますというエ...
-
プログラミングで変数と関数の...
-
構造体からレコードセットへの代入
-
コマンドプロンプト バッチ|結...
-
stdpicture型の変数に、、
-
無名関数のメリットがよくわか...
-
i++と++i ってどう違うのですか?
-
DataTableの値を変数に代入したい
-
Accessコンボボックスにレコー...
-
VBA 1行で複数の代入を行った...
おすすめ情報