0

シート 1 の列 A にマシン名のリストを含む Excel シートが存在します。

廃止されたマシンのリストを含むテキスト ファイルが存在します。

同じシート (シート 1) の列 B の下にある Excel シートで、廃止されたすべてのマシンを「DECOM」としてマークする必要があります。

これが私がこれまでに持っているものです。

Sub ImportTextFileContents()
Dim strg As Variant
Dim EntireLine As String

FName = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "Choose File to Import")

Open FName For Input Access Read As #1
i = 1
While Not EOF(1)
    Line Input #1, EntireLine
    strg = EntireLine

    If (Sheets("Sheet1").Range("A").Value = strg) Then
    Sheets("Sheet1").Range("B" & i).Value = "DECOM"
    End If

    i = i + 1
Wend
EndMacro:

On Error GoTo 0
Application.ScreenUpdating = True

Close #1
End Sub
4

1 に答える 1

0

次のようなものを試してください。

Sub ImportTextFileContents()
Dim strg As Variant
Dim EntireLine As String
Dim DecomMachines() as String
Dim rngExcel as Range
Dim cell as Range

FName = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "Choose File to Import")

Open FName For Input Access Read As #1

'Create an array to contain the list of Decommissioned machines from the TXT file

i = 1
While Not EOF(1)
    Line Input #1, EntireLine
    strg = EntireLine
    ReDim Preserve DecomMachines(0 to i-1)
    DecomMachines(i-1) = strg   
    i = i + 1
Wend    

'Set the range variable over which we need to iterate:
Set rngExcel = Sheets("Sheet1").Range("A1",Range("A1").End(xlDown).Address)  '<-- modify as needed  

For each cell in rngExcel    
'Check to see if this cell.value exists in the array we built, above:
    If Not IsError(Application.Match(Cstr(cell.Value),DecomMachines,False)) Then
        'if the name exists in the DecomMachines array, then we need to mark it as decommissioned.
        cell.Offset(0,1).Value = "DECOM"
    Else:
        'it doesnot exist in the TXT file, so ignore it
    End If
Next    

EndMacro:

On Error GoTo 0
Application.ScreenUpdating = True

Close #1
End Sub

これにより、TXTファイルで識別されたすべてのマシンを含む配列が作成され、列Aのセルの範囲を反復処理して、各セルの値が配列に存在するかどうかをテストします。存在する場合は、列B()で廃止されたものとしてマークし、cell.Offset(0,1)存在しない場合は、列Aの次のセルに移動します。

于 2013-02-13T22:21:03.637 に答える