|
おおっ!みなさんありがとうございます。
Blueさん、みんなが勉強になればぜんぜんいいですよ。
僕にはまだちょっと理解できませんでしたが。
neptune さんのやり方を使わせていただきました。
自分なりに改良して、途中にコメント文などつけてやってみました。
でもやはりうまくいかない。
昨日から何度やってもインデックスの範囲が・・型が・・・などエラーがでてしまいます。
やろうとしていることはCSVのファイルから1行ずつ読み込みます。
そして必要なデータを抽出して計算させるといったものです。
1,2行目は関係ない文章が出てくるので読み飛ばします。
3行目からデータとなります。
データは
「第1回,54%,1,2,3,4,5,6,7,8,9,10」
といったようになっていて、これが第2回、第3回とどんどん増えていきます。
3番目の「1」から12番目の「10」
までが必要なデータとなります。
このデータを使って合計や平均など求めようとしています。
現段階では配列に数値を入れた時点でエラーがでます。
教えてください。
Option Explicit
Dim Nin As String
Dim strIN As String
Dim tblDatafield() As Variant
Dim tblDataRow() As Variant
Dim tblDataSuuti() As Variant
Dim csvDATA As String
Dim j As Long
Dim k As Long
Private Sub CommandButton1_Click()
Dim lBuf(9) As Long
Dim goukei As Long
Dim I As Long
Dim Suuti As Variant
'ファイルの入出力のパスを指定
strIN = ThisWorkbook.Path & "\Loto6.csv"
'未使用のファイル番号を取得・入力ファイルを読み取り専用で開く
Nin = FreeFile
Open strIN For Input As #Nin
'始めの余分な2行を読み込む
Line Input #Nin, csvDATA
Line Input #Nin, csvDATA
'数値の初期化
j = 0
k = 0
'ファイルの読み込みを繰り返す
While Not EOF(Nin)
'ファイルを1行ずつ読み込む
Line Input #Nin, csvDATA
'「,」区切りでデータを区切る・配列に入れる
tblDataRow(k) = csvDATA
tblDatafield(j) = Split(tblDataRow(k), ",")
tblDataSuuti = Array(CInt(tblDatafield(2)), CInt(tblDatafield(3)), _
CInt(tblDatafield(4)), CInt(tblDatafield(5)), _
CInt(tblDatafield(6)), CInt(tblDatafield(7)), _
CInt(tblDatafield(8)), CInt(tblDatafield(9)), _
CInt(tblDatafield(10)), CInt(tblDatafield(11)))
For I = 0 To 5
lBuf(I) = tblDataSuuti(I)
Next I
goukei = FuncGoukei(lBuf)
Debug.Print goukei
'インクリメント
k = k + 1
j = j + 1
Wend
End Sub
'***************合計値***************
Public Function FuncGoukei(pData() As Long) As Long
Dim I As Long
Dim lAns As Long
For I = 0 To UBound(pData())
lAns = lAns + pData(I)
Next I
FuncGoukei = lAns
End Function
|
|