AW: Leerstrings in Zellen einer Spalte löschen
23.04.2016 06:43:49
fcs
Hallo Varus,
in der Problemzelle steht ein versteckter Leerstring und Summenprodukt kann keine Zellen mit Texten verarbeiten.
Der versteckte Leerstring kann entstehen beim Import von Daten oder wenn man Zellbereiche in Excel kopiert, die Formeln enthalten mit Leerstring als möglichem Ergebnis, und dann im Zielbereich einfügt mit der Option "nur Werte".
Abhillfe:
Bei Formelergebnis "", ggf. die Formeln so umstellen, dass als Ergebnis 0 statt "" ausgegeben wird.
Generell:
Per Makro die Leerstrings in den Problemzellen löschen.
In der Formel für Summe2 hast du auch noch einen kleinen Fehler. Für die Funktion VERGLEICH muss du für den optionalen 3. Parameter den Wert 0 vorgeben.
Ergebnis
| A | B | C |
5 | Bearbeiter | Summe 1 | Summe 2 |
6 | Abr | 0 | 0 |
7 | Pb | 69320 | 187570 |
Formeln der Tabelle |
Zelle | Formel | B6 | =SUMMEWENN(Neu!$D$6:$D$5013;Ergebnis!A6;Neu!$I$6:$I$5013) | C6 | =SUMMENPRODUKT((ISTZAHL(VERGLEICH(Alt!$A$6:$A$5000&Alt!$D$6:$D$5000; Neu!$A$6:$A$5000&Neu!$D$6:$D$5000;0)))*Alt!$I$6:$I$5000*(Alt!D$6:D$5000=A6)) | B7 | =SUMMEWENN(Neu!$D$6:$D$5013;Ergebnis!A7;Neu!$I$6:$I$5013) | C7 | =SUMMENPRODUKT((ISTZAHL(VERGLEICH(Alt!$A$6:$A$5000&Alt!$D$6:$D$5000; Neu!$A$6:$A$5000&Neu!$D$6:$D$5000;0)))*Alt!$I$6:$I$5000*(Alt!D$6:D$5000=A7)) |
|
Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß
Franz
Das nachfolgende Makro löscht in einer Spalte alle Leerstrings in den Zellen.
Das Mkaro am besten in der persönlichen Makro-Arbeitsmappe einfügen in einem allgemeinen Modul.
Sub Leestrings_Loeschen_in_Spalte()
Dim lSpalte As Long, sSpalte As String, lZeile As Long
Dim iPos As Integer
Dim rngZelle As Range
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
lSpalte = ActiveCell.Column
iPos = 1
Do Until IsNumeric(Mid(.Cells(1, lSpalte).Address(False, False, xlA1), iPos, 1))
sSpalte = Mid(.Cells(1, lSpalte).Address(False, False, xlA1), iPos, 1)
iPos = iPos + 1
Loop
sSpalte = InputBox("In welcher Spalte sollen die Leerstrings gelöscht werden?", _
"L E E R S T R I N G S L Ö S C H E N", sSpalte)
If sSpalte = "" Then Exit Sub
lSpalte = .Range(sSpalte & 1).Column
lZeile = .Rows.Count
If IsEmpty(.Cells(lZeile, lSpalte)) Then
lZeile = .Cells(.Rows.Count, lSpalte).End(xlUp).Row
End If
For Each rngZelle In .Range(.Cells(1, lSpalte), .Cells(lZeile, lSpalte)).Cells
If Not IsEmpty(rngZelle) Then
If Trim(rngZelle) = "" Then
If Not rngZelle.HasFormula Then
rngZelle.ClearContents
End If
End If
End If
Next
End With
End Sub