我有一个Excel文件,其中添加了一些数据,它可以是1行,也可以是1000行。
VBA脚本根据C和C列匹配将使用的结果。 E:
Sub LoopRange()
Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer
Dim N As Long
N = Cells(1, 1).End(xlDown).Row
For i = 2 To N
If Range("E" & i).Value = "South" And Range("C" & i).Value = "Yes" Then
'Do this
End If
Next i
For i = 2 To N
If Range("E" & i).Value = "South" And Range("C" & i).Value = "No" Then
'Do this
End If
Next i
For i = 2 To N
If Range("E" & i).Value = "West" And Range("C" & i).Value = "Yes" Then
'Do this
End If
Next i
For i = 2 To N
If Range("E" & i).Value = "West" And Range("C" & i).Value = "No" Then
'Do this
End If
Next i
For i = 2 To N
If Range("E" & i).Value = "North" And Range("C" & i).Value = "Yes" Then
'Do this
End If
Next i
For i = 2 To N
If Range("E" & i).Value = "North" And Range("C" & i).Value = "No" Then
'Do this
End If
Next i
For i = 2 To N
If Range("E" & i).Value = "East" And Range("C" & i).Value = "Yes" Then
'Do this
End If
Next i
For i = 2 To N
If Range("E" & i).Value = "East" And Range("C" & i).Value = "No" Then
'Do this
End If
Next i
For i = 2 To N
If Range("E" & i).Value = "NorthWest" And Range("C" & i).Value = "Yes" Then
'Do this
End If
Next i
For i = 2 To N
If Range("E" & i).Value = "NorthWest" And Range("C" & i).Value = "No" Then
'Do this
End If
Next i
For i = 2 To N
If Range("E" & i).Value = "NorthEast" And Range("C" & i).Value = "Yes" Then
'Do this
End If
Next i
For i = 2 To N
If Range("E" & i).Value = "NorthEast" And Range("C" & i).Value = "No" Then
'Do this
End If
Next i
End Sub
我想创建不同的文本文件,具体取决于哪些IF语句是真的。要打印到textfile的值是最静态的,但是A列和A列中的值是静态的。 B,我想在文中使用。
例如: 1和9行匹配IF语句
If Range("E" & i).Value = "South" And Range("C" & i).Value = "Yes" Then...
然后我想获取A2和B2中的值以用于文本文件中的一个结果以及一些其他静态代码。 我想在A9和B2中获取相同文本文件中的值但是另一行。
我已经找到了如何将数据导出到TXT,但我不知道如何根据IF语句选择要检索的内容。
myFile = Application.DefaultFilePath & "\South_Rename.txt"
Set rng = Selection
Open myFile For Output As #1
For i = 1 To rng.Rows.Count
For j = 1 To rng.Columns.Count
cellValue = rng.Cells(i, j).Value
If j = rng.Columns.Count Then
Write #1, cellValue
Else
Write #1, cellValue,
End If
Next j
Next i
Close #1
有人提出一些建议吗?
答案 0 :(得分:1)
如下所示,请记住,输出将在写入之前完全清空Text文件,因此我已将Append方法作为替代方法添加到文本文件而不先清空其内容,看看下面代码中的评论:
Sub LoopRange()
Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer
Dim N As Long
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
N = ws.Cells(1, 1).End(xlDown).Row 'get the last row with data on Column A
For i = 2 To N
If ws.Range("E" & i).Value = "South" And ws.Range("C" & i).Value = "Yes" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\South_Yes.txt" 'choose the text file to write to
'Open myFile For Output As #1 'Output will re-write the file
Open myFile For Append As #1 'Append will add the rows to the file
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
ElseIf ws.Range("E" & i).Value = "South" And ws.Range("C" & i).Value = "No" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\South_No.txt" 'choose the text file to write to
Open myFile For Append As #1
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
ElseIf ws.Range("E" & i).Value = "West" And ws.Range("C" & i).Value = "Yes" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\West_Yes.txt" 'choose the text file to write to
Open myFile For Append As #1
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
ElseIf ws.Range("E" & i).Value = "West" And ws.Range("C" & i).Value = "No" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\West_No.txt" 'choose the text file to write to
Open myFile For Append As #1
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
ElseIf ws.Range("E" & i).Value = "North" And ws.Range("C" & i).Value = "Yes" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\North_Yes.txt" 'choose the text file to write to
Open myFile For Append As #1
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
ElseIf ws.Range("E" & i).Value = "North" And ws.Range("C" & i).Value = "No" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\North_No.txt" 'choose the text file to write to
Open myFile For Append As #1
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
ElseIf ws.Range("E" & i).Value = "East" And ws.Range("C" & i).Value = "Yes" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\East_Yes.txt" 'choose the text file to write to
Open myFile For Append As #1
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
ElseIf ws.Range("E" & i).Value = "East" And ws.Range("C" & i).Value = "No" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\East_No.txt" 'choose the text file to write to
Open myFile For Append As #1
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
ElseIf ws.Range("E" & i).Value = "NorthWest" And ws.Range("C" & i).Value = "Yes" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\NorthWest_Yes.txt" 'choose the text file to write to
Open myFile For Append As #1
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
ElseIf ws.Range("E" & i).Value = "NorthWest" And ws.Range("C" & i).Value = "No" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\NorthWest_No.txt" 'choose the text file to write to
Open myFile For Append As #1
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
ElseIf ws.Range("E" & i).Value = "NorthEast" And ws.Range("C" & i).Value = "Yes" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\NorthEast_Yes.txt" 'choose the text file to write to
Open myFile For Append As #1
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
ElseIf ws.Range("E" & i).Value = "NorthEast" And ws.Range("C" & i).Value = "No" Then
acellValue = ws.Range("A" & i)
bcellValue = ws.Range("B" & i)
myFile = Application.DefaultFilePath & "\NorthEast_No.txt" 'choose the text file to write to
Open myFile For Append As #1
Write #1, acellValue & ", " & bcellValue & vbNewLine
Close #1
End If
Next i
End Sub