vbaスクリプトを初めて使用しています。私が必要とするのは、LZFmaxデータを得ることです。このようなデータ形式のために働くExcel VBA:特定の行をtxtファイルから選択した列の範囲に読み込みます。
Public koef_k As Double
Private Sub Open_Click()
Dim myFile As Variant, koef_k As Integer
myFile = Application.GetOpenFilename("Text Files (*.txt),*.txt", , _
"Select file")
If myFile = False Then Exit Sub
Open myFile For Input As #1
row_number = 0
Do Until EOF(1)
Line Input #1, LineFromFile
LineItems = Split(LineFromFile, vbTab)
Range("C9").Offset(row_number, 0).Value = LineItems(1)
row_number = row_number + 1
Loop
Close #1
End Sub
:
測定は
Band [Hz] 6.3 8.0 10.0 12.5 16.0 20.0 25.0 31.5 40.0 50.0 63.0 80.0 100.0 125.0 160.0 200.0 250.0 315.0 400.0 500.0 630.0 800.0 1000.0 1250.0 1600.0 2000.0 2500.0 3150.0 4000.0 5000.0 6300.0 8000.0 10000.0 12500.0 16000.0 20000.0
[dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB] [dB]
LZFmax 88.5 81.9 72.8 71.5 70.3 71.0 75.0 69.9 76.5 86.9 93.4 97.9 93.4 86.7 88.8 99.4 98.0 100.8 103.4 97.6 101.4 96.5 93.3 90.2 88.5 91.2 85.2 86.7 80.9 78.4 79.8 80.3 75.8 68.9 66.9 63.9
LZFmin 20.0 21.4 22.8 20.1 24.6 24.6 28.7 30.5 32.8 35.0 29.0 35.6 34.5 38.0 39.4 39.0 42.5 40.1 41.9 41.7 43.0 39.2 38.5 37.5 36.7 35.4 34.7 34.8 34.6 34.2 34.7 35.7 36.6 37.5 38.9 40.9
LZeq 61.8 56.8 46.8 46.7 49.1 55.5 49.4 47.5 56.2 69.0 75.3 79.4 75.2 70.7 72.7 76.7 78.8 79.0 79.2 78.6 81.3 78.5 75.2 70.5 70.9 70.0 67.2 68.2 63.6 62.7 57.5 57.4 53.7 51.8 47.8 53.9
は、私はすでにコードを持っている結果、それが読まれます。このコードを変更する方法
Band[Hz] LZFmax
50 51
63 58
80 60
100 61
125 63
160 65
200 66
250 69
315 73
400 67
500 65
630 62
800 60
1000 58
1250 55
1600 51
2000 48
2500 42
3150 39
4000 36
5000 32
LZFmax線のみで50〜5000HzのBand [Hz]列を通過しますか?私が好きな
は現在、私は部分的な解決策に
Private Sub Open_Click()
Dim fn As Variant, myLine As Long, txt As String, i As Integer, x
fn = Application.GetOpenFilename("Text Files (*.txt),*.txt", , _
"Open File")
If fn = False Then Exit Sub
myLine = 111 '<- change to suite
txt = CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll
x = Split(txt, vbTab)
'MsgBox x(myLine + 1)
row_number = 0
Range("C9").Offset(row_number, 0).Value = x(myLine - 10)
i = 10
Do While i < 31
Cells(i, "C").Value = x(myLine)
i = i + 1
myLine = myLine + 1
Loop
Close #1
End Sub
を発見したこのコードは動作します、私は手動でそれを見つけるために持っていたので、唯一のマイライン値は、非常に便利ではありません。 このコードを最適化するにはより良い方法がありますか?
ありがとうございました。私には完全にはっきりしないコード部分があります。 'x =分割(txt、vbNewLine) i = 0の場合UBound(x) Left(x(i)、4)=" Band "Then y = x(i) ElseIf Left(x エンドIf' の場合)、6)= "LZFmax" その後 のz = xの(I) 出口は、だから、スプリットでvbLineオプションは、行にファイル全体を分割し、 番号4と6は、バンドとLZFかどうかをチェックするためのものですそれらの行にありますか? – user3434943
はい 'vbNewLine'はtxtファイルを9行に分割し、配列' x'は9要素を含んでいます。今、各行を通って最初の4(6)の文字をカットして、「Band」か「LZFmax」かを調べます。しかし、それはあなたのように言った。他の質問がある場合は、ただ質問してください:) – UGP