根据根列和具有特定标题的列中的相同值从列中删除行中的值

问题描述 投票:0回答:1

我遇到了 Excel VBA 问题,我希望这里有人可以帮助我。

我有一个文件,其中不同列中包含不同供应商的价格。有一个根列(在我的示例文件中,这是标题为“TESLA”的列)。我希望代码仅删除标题为“FIAT”和“KIA”的列中的价格,前提是它们与“TESLA”列中的价格位于同一行,并且它们分别与“TESLA”列中的价格匹配。

因此,在我的示例文件中,它应该仅删除“FIAT”列中的值 36,00 和值 88,00。在“KIA”列中只有值 56,00 和值 896,00。

其他列中的值应保留,即使它们与“TESLA”列中的值匹配。

这是我到目前为止所得到的:

Sub delete_matches()

    Dim LastRow as long
    Dim LastColumn As Long, i As Long, Position As Long

    With Sheets("Sheet1")
        LastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
        LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = LastColumn To 1 Step -1

            Position = InStr(1, .Cells(1, i), "TESLA")

            If Position <> 0 Then
   

  'Here has to happen something..
           


            End If

        Next i

    End With
    
End Sub
excel vba header row
1个回答
0
投票

首先识别关键列的位置(TESA、KIA、FIAT),然后比较和清理数据。

Sub delete_matches()
    Dim LastRow As Long
    Dim LastColumn As Long, i As Long
    Dim tCol As Integer, kCol As Integer, fCol As Integer
    With Sheets("Sheet1")
        arr = .UsedRange.Value
        For i = 1 To UBound(arr, 2)
            If Trim(arr(1, i)) = "TESLA" Then tCol = i
            If Trim(arr(1, i)) = "KIA" Then kCol = i
            If Trim(arr(1, i)) = "FIAT" Then fCol = i
        Next i
        If tCol * kCol * fCol = 0 Then
            MsgBox "Can't find key column header"
        Else
            For i = 1 To UBound(arr)
                If arr(i, kCol) = arr(i, tCol) Then arr(i, kCol) = ""
                If arr(i, fCol) = arr(i, tCol) Then arr(i, fCol) = ""
            Next i
        End If
        .UsedRange.Value = arr
    End With
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.