Vba 根据IF结果写入TXT

Vba 根据IF结果写入TXT,vba,excel,export-to-text,Vba,Excel,Export To Text,我有一个Excel文件,其中添加了一些数据,可以是1行,也可以是1000行 VBA脚本根据列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).

我有一个Excel文件,其中添加了一些数据,可以是1行,也可以是1000行

VBA脚本根据列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列和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

有人有什么建议吗?

下面这样的建议如何?请记住,在写入文本文件之前,输出将完全清空文本文件,因此我将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

您只需要一个For循环,然后评估每个可能的场景。您可以根据结果为另一个变量赋值。谢谢。我认为这是在路上。虽然如果我没有理解错的话,它只会创建一个名为South_Rename.txt的文本文件,并且只会打印最后一行。这并不是我想要达到的目标。C&E列具有相同结果的所有行应位于同一文本文件中。在我上面的例子中,来自excel的图像会给我一个文件,其中Rename Yes和Place South是匹配的,这将包括第2行和第9行a列和B列中的值。然后,如果语句匹配,它将继续创建新的文本文件。基于IF语句命名?@MarkusSacramento更新了我的答案,为每个IF使用不同的文件,它将把IF语句返回true的给定行的a列和B列中的值附加到一行,然后继续查找其他匹配项并在下一行写入…性能,谢谢!现在,我只需要修复文件中的结果应该是什么样子,并添加som其他文本。谢谢你的帮助!