2017-10-25 30 views
1

Ich habe ein Dokument mit einer Produktlänge | Produktname | und ProduktpreisMehrere Zeilen in Excel finden und ersetzen

ich diesen Code verwendet habe, fand ich online den Produktpreis zu ersetzen:

Sub Multi_FindReplaceALL_pvc_replace_new() 
'PURPOSE: Find & Replace a list of text/values throughout entire workbook 
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault 

Dim sht As Worksheet 
Dim fndList As Variant 
Dim rplcList As Variant 
Dim x As Long 

fndList = Array("2 ft", "PVC", "390") 
rplcList = Array("2 ft", "PVC", "290") 

'Loop through each item in Array lists 
For x = LBound(fndList) To UBound(fndList) 
'Loop through each worksheet in ActiveWorkbook 
    For Each sht In ActiveWorkbook.Worksheets 
    sht.Cells.Replace What:=fndList(x), Replacement:=rplcList(x), _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
     SearchFormat:=False, ReplaceFormat:=False 
    Next sht 

    Next x 

End Sub 

Das Problem, das ich habe, ist der VB-Skript ersetzt die Produktnamen Acrylic die Preisgestaltung als auch.

Jede Hilfe würde sehr geschätzt werden. Ich kann bei Bedarf auch zusätzliche Informationen liefern.

Bildlink von Doc: http://prntscr.com/h1votx

+0

Bitte erläutern Sie, wie Sie erwarten, dass Ihr Code funktioniert. –

+0

Was hat die Preisgestaltung mit dem von Ihnen geposteten Code zu tun? Wie würden wir/Sie wissen, was die aktualisierte Preisgestaltung sein sollte? – BruceWayne

+0

Ich möchte den 2 ft PVC-Preis von 390 bis 290 über alle 2 ft PVC-Produkte ändern. Ist das sinnvoll? –

Antwort

0

Haben Sie nur 1 Blatt? Dieser Code wird mit dem Blatt im Druckbildschirm verwendet, ist jedoch für die aktuellen Spalten, in die die Werte fallen, fest codiert. Es kann ein wenig gelockert werden, wenn Sie es für verschiedene Werte oder verschiedene Spalten benötigen.

Sub Multi_FindReplaceALL_pvc_replace_new() 
'PURPOSE: Find & Replace a list of text/values throughout entire workbook 
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault 

Dim sht As Worksheet 
Dim i As Integer 

Dim lastRow As Integer 

'get the last row in the sheet 
With ActiveSheet 
    lastRow = .Cells(.Rows.Count, "I").End(xlUp).Row 
End With 

'Loop through each row in the sheet 
For i = 1 To lastRow 
'Loop through each worksheet in ActiveWorkbook 
    If Cells(i, 9).Value = "2 ft" And Cells(i, 11).Value = "PVC" Then 
     Cells(i, 20).Value = "290" 
    End If 
    Next i 

End Sub 

Grundsätzlich war Ihr Code zuvor nur durch das gesamte Blatt und änderte alle Werte, wenn sie in diesem Array waren. Diese Funktion wird zeilenweise ausgeführt und vergleicht speziell die Spalten, die Ihre Werte enthalten

+0

natürlich wäre der einfachste Weg, einen Filter zu den Spalten hinzuzufügen, und dann nach Option1 und Option2 zu filtern und dann können Sie nur alle Zeilen gleichzeitig bearbeiten – Kudu2

+0

Hi Kudu2 - Ich habe diesen Code ausprobiert und aus irgendeinem Grund konnte ich nicht Erhalten Sie es nicht, um den PVC-Preis von 390 bis 290 in der 2 ft Linie zu ersetzen. –

+0

Oh Entschuldigung, ich dachte, Ihre Option1 und Option2 wären in den Spalten b und d. Ich habe den Code für die richtigen Spalten aktualisiert. Aber wie ich schon sagte, wenn Sie Ihren Spaltennamen einen Filter hinzufügen, ist es viel einfacher, mit großen Datenmengen umzugehen. siehe https://www.gcflearnfree.org/excel2013/filtering-data/1/ – Kudu2

Verwandte Themen