
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
vba textboxへの入力について教...
-
複数のExcelファイルをマージす...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
改行文字「vbCrLf」とは
-
Vba Array関数について教えてく...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】開いているブックの...
-
【VBA】値を変更しながら連続で...
-
VBAの「To」という語句について
-
算術演算子「¥」の意味について
-
以下のプログラムの実行結果は...
-
VB.net 文字列から日付型へ変更...
-
[Excel VBA]特定の条件で文字を...
-
VBA ユーザーフォーム ボタンク...
-
ワードの図形にマクロを登録で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
複数のExcelファイルをマージす...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
vba textboxへの入力について教...
-
Vba セルの4辺について罫線が有...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】開いているブックの...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
VBA 入力箇所指定方法
-
[VB.net] ボタン(Flat)のEnable...
-
VBAでセルの書式を変えずに文字...
-
vb.net(vs2022)のtextboxのデザ...
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
おすすめ情報