[リストへもどる]
一括表示

投稿時間:2003/10/03(Fri) 14:45
投稿者名:初心者H君
Eメール:
URL :
タイトル:
書き込みのテクニック
はじめまして初心者です。
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15  という5行3列のデータを読みこんで

1 6  11
2 7  12
3 8  13
4 9  14
5 10 16   という3行5列に変更して書き込むということをやっているのですが

どうしても書き込んだファイルを見るとうまくいかず、縦1列にならんでしまったり数字が順番に書き込まれているだけとかになってしまいます....

いろいろ調べてみたのですが、うまくいく方法が見つかりませんでした...
お時間あればレスお願いします。

投稿時間:2003/10/03(Fri) 14:51
投稿者名:初心者H君
Eメール:
URL :
タイトル:
Re: 書き込みのテクニック
> はじめまして初心者です。
> 1,2,3,4,5
> 6,7,8,9,10
> 11,12,13,14,15  という5行3列のデータを読みこんで
>
> 1 6  11
> 2 7  12
> 3 8  13
> 4 9  14
> 5 10 16   という3行5列に変更して書き込むということをやっているのですが
>
> どうしても書き込んだファイルを見るとうまくいかず、縦1列にならんでしまったり数字が順番に書き込まれているだけとかになってしまいます....
>
> いろいろ調べてみたのですが、うまくいく方法が見つかりませんでした...
> お時間あればレスお願いします。



行と列間違えました...3行5列を5行3列でした...

投稿時間:2003/10/03(Fri) 15:53
投稿者名:nobu
Eメール:
URL :
タイトル:
Re^2: 書き込みのテクニック
> > 1,2,3,4,5
> > 6,7,8,9,10
> > 11,12,13,14,15  という5行3列のデータを読みこんで

> > 1 6  11
> > 2 7  12
> > 3 8  13
> > 4 9  14
> > 5 10 16   という3行5列に変更して書き込むということをやっているのですが

余り良いサンプルとは言えませんが下記ではどうですか?

Dim tmp1 As String
Dim tmp2 As String
Dim tmp3 As String

Dim dat1() As String
Dim dat2() As String
Dim dat3() As String

Dim fNo As Integer
Dim j As Integer

tmp1 = "1,2,3,4,5"
tmp2 = "6,7,8,9,10"
tmp3 = "11,12,13,14,15"

dat1 = Split(tmp1, ",")
dat2 = Split(tmp2, ",")
dat3 = Split(tmp3, ",")

fNo = FreeFile

Open "C:\test.txt" For Output As #fNo

    For j = 0 To 4
        Print #fNo, dat1(j) & " " & dat2(j) & " " & dat3(j)
    Next j

Close #fNo

投稿時間:2003/10/03(Fri) 16:06
投稿者名:初心者H君
Eメール:
URL :
タイトル:
Re^3: 書き込みのテクニック
> > > 1,2,3,4,5
> > > 6,7,8,9,10
> > > 11,12,13,14,15  という5行3列のデータを読みこんで
>
> > > 1 6  11
> > > 2 7  12
> > > 3 8  13
> > > 4 9  14
> > > 5 10 16   という3行5列に変更して書き込むということをやっているのですが
>
> 余り良いサンプルとは言えませんが下記ではどうですか?
>
> Dim tmp1 As String
> Dim tmp2 As String
> Dim tmp3 As String
>
> Dim dat1() As String
> Dim dat2() As String
> Dim dat3() As String
>
> Dim fNo As Integer
> Dim j As Integer
>
> tmp1 = "1,2,3,4,5"
> tmp2 = "6,7,8,9,10"
> tmp3 = "11,12,13,14,15"
>
> dat1 = Split(tmp1, ",")
> dat2 = Split(tmp2, ",")
> dat3 = Split(tmp3, ",")
>
> fNo = FreeFile
>
> Open "C:\test.txt" For Output As #fNo
>
>     For j = 0 To 4
>         Print #fNo, dat1(j) & " " & dat2(j) & " " & dat3(j)
>     Next j
>
> Close #fNo



すいません例が悪かったですね...
これ以外にも行列の数が両方100のデータもあるんです...
これがわかれば他もできると思ったので例は小さな数にしたんですけど..
大きい数でも簡単にできる方法ありますか?

投稿時間:2003/10/03(Fri) 16:17
投稿者名:nobu
Eメール:
URL :
タイトル:
Re^4: 書き込みのテクニック
全文引用は止めて下さい。
(その方が楽でしょうが、手を抜かずに適切な引用をして下さい)

>大きい数でも簡単にできる方法ありますか?

基本的な処理を提示しました。後は自分で考えて下さい。
(例を小出しにされたんではこれ以上つきあう気はありません)

投稿時間:2003/10/03(Fri) 16:38
投稿者名:初心者H君
Eメール:
URL :
タイトル:
Re^5: 書き込みのテクニック
すいませんでした..
がんばってやってみます。

投稿時間:2003/10/04(Sat) 13:02
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re^6: 書き込みのテクニック
試してないけど、行と列の数に関係なくやるならこんな感じかな。

Dim iFileNo As Integer
Dim i As Integer
Dim j As Integer
Dim strData() As String
Dim strTemp() As String

'行数と列数を取得
i = 0
iFileNo = FreeFile
Open "C:\SrcText.txt" For Input As #iFileNo
Do Until EOF(iFileNo)
    Line Input #iFileNo, strBuffer
    strData = Split(strBuffer, ",")
    i = i + 1
    j = UBound(strData) - LBound(strData) + 1
Loop
Close #iFileNo

'データを2次元配列に読み込み
ReDim strData(i - 1, j - 1)
FileNo = FreeFile
Open "C:\SrcText.txt" For Input As #iFileNo
For i = LBound(strData, 1) To UBound(strData, 1)
    Line Input #iFileNo, strBuffer
    strTemp = Split(strBuffer, ",")
    For j = LBound(strData, 2) To UBound(strData, 2)
        strData(i, j) = strTemp(j)
    Next j
Next i
Close #iFileNo

'2次元配列の行と列を入れ換えてデータを書き込み
ReDim strTemp(UBound(strData, 1))
iFileNo = FreeFile
Open "C:\DstText.txt" For Output As #iFileNo
    For j = LBound(strData, 2) To UBound(strData, 2)
        For i = LBound(strData, 1) To UBound(strData, 1)
            strTemp(i) = strData(i, j)
        Next i
        Print #iFileNo, Join(strTemp, ",")
    Next j
Close #iFileNo