Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
328to332
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
328to332
328to332
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suchen

Suchen
27.10.2003 19:23:38
Paul
Hallo

Ich habe eine Ersatzteil-Liste mit EK-Preisen, diese Preise muss ich 1-2 mal im Jahr aktualisieren. Jetzt hat aber die ET-Liste ca. 40 Blätter mit je 50-100 Teile und einzelne Teile sind auf mehreren Blättern zu finden.
Wie kann ich nur EK-Preis anhand einer Artikelnr. über das ganze Dokument hin suchen und durch den neuen EK-Preis ersetzen ?
Ich muss nach der Artikelnr. in Spalte A suchen und den EK-Preis in Spalte I ersetzen. Erschwerend kommt hinzu das der neue EK-Preis nur verwendet werden soll, wenn er höher ist als der alte EK-Preis. Weis jemand wie ich das Problem lösen kann ?

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ersetz-Routine
27.10.2003 20:21:38
Hans T.
Hallo Paul

Die folgende Routine geht alle Tabellenblätter durch, misst den Bereich, der Daten enthält (damit nicht 65536 Zeilen gelesen werden) und ersetzt jeden Preis. Die Funktion GetNewEK liefert den neuen Preis anhand der Artikelnummer. Die musst du selber schreiben.

Ich hoffe, das erfüllt die Vorgaben.


Public Sub PreiseErsetzen()
'Ersetzt die Preise auf allen Tabellenblättern des aktiven Files
Const ARTCOL = 1                          'Spalte A mit Artikelnummern
Const EKCOL = 9                           'Spalte I mit zu ersetzenden Preisen
Const FIRSTROW = 2                        'erste Zeile mit Daten
Dim actSheet As Worksheet                 'aktives Tabellenblatt
Dim rngEK As Range                        'Bereich mit zu ersetzenden Preisen
Dim actCell As Range                      'aktive Zelle
For Each actSheet In ActiveWorkbook.Worksheets
actSheet.Activate                       'gehe zu jedem Tabellenblatt
Set rngEK = Range(Cells(FIRSTROW, EKCOL), Cells([A1].SpecialCells(xlCellTypeLastCell).Row, EKCOL)) 'Bereich feststellen
For Each actCell In rngEK.Cells         'jede Zelle bearbeiten
actCell.Value = GetNewEk(actCell.Offset(EKCOL - ARTCOL).Value)  'deine Ersetzungsfunktion
Next
Next
End Sub

Viele Grüsse
Hans T.
Anzeige
AW: Suchen
27.10.2003 20:47:35
Beni
Hallo Paul,
diese Prozedur sucht den Wert in Spalte A in allen nachfolgenden Blätter und ersetz den Wert in Spalte I, wenn der Wert höher ist.
Die aktualisierende Tabelle muss die erste Tabelle sein und diese Prozedur muss im Tabellenmodul stehen, rechte Maustaste auf Blattregister/Code anzeigen / Modul öffnet sich und Prodedur einfügen.
Ich habe Dir ein Beispiel angefügt.
Gruss Beni

https://www.herber.de/bbs/user/1628.xls


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
For i = 2 To Sheets.Count
Wert = Target
With Sheets(i).Columns(1)
Set C = .Find(Wert, LookIn:=xlValues, LookAt:=xlWhole)
If C Is Nothing Then GoTo 1
End With
If Cells(Target.Row, 9) < C(1, 9) Then
Cells(Target.Row, 9) = C(1, 9)
End If
If Not C Is Nothing Then Exit Sub
1:
Next i
End Sub

Anzeige
AW: Danke --ot
27.10.2003 20:55:38
Pauk
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige