AW: numerischen Wert in Spalte finden
07.04.2022 07:52:17
EasyD
Hallo zusammen
da muss ich mich wohl entschuldigen, denn ich habe (mal wieder) nur das halbe Problem geschildert:
@Oberschlumpf
ich muss von unten nach oben suchen
@Boris
das hab ich versucht und bekomme einen Laufzeitfehler 13
@Daniel und Gerd
wird m.E. jeweils nicht funktionieren, und da kommen wir zum Problem:
Das Ganze findet in einer Schleife statt:
(sorry für das Entfernen der Kommentierungen dazu, das waren allesamt fachbezogene/vertrauliche Inhalte)
Sub Export()
Dim intZeile As Integer
Dim x As Integer
Dim lRow As Integer
Dim lCol As Integer
Dim WsF As WorksheetFunction
Dim Bereich As Range
Set Bereich = Sheets("Bearbeitungshinweise").Range("A4:C45")
Set WsF = Application.WorksheetFunction
lRow = Sheets("Import").UsedRange.SpecialCells(xlCellTypeLastCell).Row
lCol = Sheets("Import").UsedRange.SpecialCells(xlCellTypeLastCell).Column
Sheets("Export").Activate
x = 1 'Zielzeile auf Export zum Start auf 1 setzen, damit bei 2 begonnen wird (x = x + 1)
For intZeile = 2 To lRow 'Bereich auf Import, der abgearbeitet werden muss
'Zeilen auf dem Blatt Export befüllen, ausgehend vom Blatt Import - das ganze 2-geteilt bei Aufteilungen:
' 1.Teilbereich: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
If Len(Sheets("Import").Cells(intZeile, 2)) 0 And Len(Sheets("Import").Cells(intZeile, 3)) 0 Then 'Zeilen zwischen den einzelnen Journalen eliminieren
If Left(Sheets("Import").Cells(intZeile + 1, 7), Sheets("Bearbeitungshinweise").Range("G52").Value) = Sheets("Bearbeitungshinweise").Range("G51").Value Then
x = x + 1 'Ermittlung der Zeile, in welche auf Export geschrieben werden muss
Sheets("Export").Cells(x, 3).Value = Right(Left(Sheets("Import").Cells(intZeile + 1, 7), Sheets("Bearbeitungshinweise").Range("G52").Value + 5), 3)
Sheets("Export").Cells(x, 6).Value = Mid(Sheets("Import").Cells(intZeile + 1, 7), Sheets("Bearbeitungshinweise").Range("G52").Value + 13)
Sheets("Export").Cells(x, 2).Value = Sheets("Import").Cells(intZeile, 4)
Sheets("Export").Cells(x, 4).Value = Sheets("Import").Cells(intZeile, 3)
Sheets("Export").Cells(x, 7).Value = Sheets("Import").Cells(intZeile, 7)
Sheets("Export").Cells(x, 5).Value = -Sheets("Import").Cells(intZeile + 1, 9)
Sheets("Export").Cells(x, 8).Value = WsF.VLookup(Sheets("Export").Cells(x, 6).Value, Bereich, 3, True)
Sheets("Export").Cells(x, 9).Value = Sheets("Import").Cells(intZeile, 6)
Sheets("Export").Cells(x, 12).Value = Sheets("Import").Cells(intZeile, 5)
If Len(Sheets("Import").Cells(intZeile, 10)) = 7 Then
Sheets("Export").Cells(x, 10).Value = Sheets("Import").Cells(intZeile, 10)
Else
If Len(Sheets("Import").Cells(intZeile, 13)) = 7 Then
Sheets("Export").Cells(x, 10).Value = Sheets("Import").Cells(intZeile, 13)
Else
'nichts machen
End If
End If
If IsNumeric(Sheets("Import").Cells(intZeile, 1).Value) = True Then
Sheets("Export").Cells(x, 1).Value = Sheets("Import").Cells(intZeile, 1)
Else
Sheets("Export").Cells(x, 1).Value = Sheets("Export").Cells(x - 1, 1).Value 'hier hängt das Problem
y = Evaluate("=LOOKUP(2,1/ISNUMBER(A2:A2000),ROW(2:2000))")
Sheets("Export").Cells(y, 1).Value = Sheets("Import").Cells(intZeile, 1)
End If
' 2.Teilbereich: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
If Len(Sheets("Import").Cells(intZeile + 1, 9)) 0 And Len(Sheets("Import").Cells(intZeile + 2, 9)) 0 Then 'Bei Aufteilungen:
x = x + 1 'nochmal eine Zeile drauf um auf Export eine weitere hinzuzufügen für die Aufteilung
Sheets("Export").Cells(x, 3).Value = Right(Left(Sheets("Import").Cells(intZeile + 2, 7), Sheets("Bearbeitungshinweise").Range("G52").Value + 5), 3)
Sheets("Export").Cells(x, 6).Value = Mid(Sheets("Import").Cells(intZeile + 1, 7), Sheets("Bearbeitungshinweise").Range("G52").Value + 13)
Sheets("Export").Cells(x, 2).Value = Sheets("Import").Cells(intZeile, 4)
Sheets("Export").Cells(x, 4).Value = Sheets("Import").Cells(intZeile, 3)
Sheets("Export").Cells(x, 7).Value = Sheets("Import").Cells(intZeile, 7)
Sheets("Export").Cells(x, 5).Value = -Sheets("Import").Cells(intZeile + 2, 9)
Sheets("Export").Cells(x, 8).Value = WsF.VLookup(Sheets("Export").Cells(x, 6).Value, Bereich, 3, True)
Sheets("Export").Cells(x, 9).Value = Sheets("Import").Cells(intZeile, 6)
Sheets("Export").Cells(x, 12).Value = Sheets("Import").Cells(intZeile, 5)
If Len(Sheets("Import").Cells(intZeile, 10)) = 7 Then
Sheets("Export").Cells(x, 10).Value = Sheets("Import").Cells(intZeile, 10)
Else
If Len(Sheets("Import").Cells(intZeile, 13)) = 7 Then
Sheets("Export").Cells(x, 10).Value = Sheets("Import").Cells(intZeile, 13)
Else
'nichts machen
End If
End If
If IsNumeric(Sheets("Import").Cells(intZeile, 1).Value) = True Then
Sheets("Export").Cells(x, 1).Value = Sheets("Import").Cells(intZeile, 1)
Else
Sheets("Export").Cells(x, 1).Value = Sheets("Export").Cells(x - 1, 1).Value 'hier hängt das Problem
y = Evaluate("=LOOKUP(2,1/ISNUMBER(A2:A2000),ROW(2:2000))")
Sheets("Export").Cells(y, 1).Value = Sheets("Import").Cells(intZeile, 1)
End If
End If
End If
End If
Next
'Call SaveAsCSV
Sheets("Bearbeitungshinweise").Activate
End Sub