Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: DIV/X! durch Array in anderes Format bringen

DIV/X! durch Array in anderes Format bringen
01.04.2016 14:43:57
Sav
Hallo Community,
kann mir bitte jemand sagen wieso Spalten in der "Ausgangstabelle" mit dem Wert "DIV/X!" ignoriert werden durch das Array? Ich würde diese Werte auch gerne in das andere Datenformat überführen.
Der Code stammt von "Tino". Leider kann ich in meinen alten Beitrag kein Kommentar mehr beifügen.
Grundsätzlich bringt das Makro Daten in der Form
A1 B C
A2 B C
A3 B C
In die Form
A1 B
A2 B
A3 B
A1 C
A2 C
A3 C
Problem:
A1 DIV/X C
A2 B C
A3 DIV/X C
wird zu
A2 B
A1 C
A2 C
A3 C
Ergebnis soll aber
A1 DIV/X
A2 B
A3 DIV/X
A1 C
A2 C
A3 C
sein.
Option Explicit

Sub Beispiel()
Dim ArData, ArNew()
Dim n&, nn&, nnn&
On Error GoTo ErrorHandler:
With Sheets(Sheets("Auswertungstabelle").Range("B2").Value) 'Ausgangstabelle evtl. anpassen
'Datenbereich evtl. anpassen
'Datenbereich hier ab A2
'bis zur letzten Zelle in Spalte A
'bis zu letzten Zelle in Zeile 1
With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).EntireRow
If .Rows(.Rows.Count).Row 
Sub 'keine Daten
With .Columns(1).Resize(, .Cells(2, .Columns.Count).End(xlToLeft).Column)
If .Columns(.Columns.Count).Column = 1 Then Exit 

Sub 'keine Daten
ArData = .Value
End With
End With
End With
ReDim ArNew(1 To UBound(ArData) * UBound(ArData, 2), 1 To 6)
nnn = 1
ArNew(nnn, 1) = "Kriterium"
ArNew(nnn, 2) = "Wert"
ArNew(nnn, 3) = "Datum"
ArNew(nnn, 4) = "Woche"
ArNew(nnn, 5) = "Monat"
ArNew(nnn, 6) = "Wochentag"
For nn = 2 To UBound(ArData, 2)
If ArData(1, nn)  "" Then
For n = 2 To UBound(ArData)
'If Not IsError(ArData(n, nn)) Then
If ArData(n, nn)  "" Then
nnn = nnn + 1
ArNew(nnn, 1) = ArData(n, 1)
ArNew(nnn, 2) = ArData(n, nn)
ArNew(nnn, 3) = ArData(1, nn)
ArNew(nnn, 4) = "=WEEKNUM(RC[-1])" 'KW
ArNew(nnn, 5) = "=MONTH(RC[-2])" 'Monat
ArNew(nnn, 6) = "=WEEKDAY(RC[-3])" 'Tag
End If
'End If
Next n
' End If
Next nn
'Ausgabe in neue Tabelle
With ThisWorkbook
With .Sheets("Auswertungstabelle")
.Range("A25", .Cells(.Rows.Count, 6)).Clear
With .Cells(26, 1).Resize(UBound(ArNew), UBound(ArNew, 2))
.Columns(3).NumberFormat = "dd.mm.yyyy"
.Rows(1).Font.Bold = True
.Rows(1).HorizontalAlignment = xlCenter
.FormulaR1C1 = ArNew
.EntireColumn.AutoFit 'Spaltenbreite anpassen
End With
End With
End With
ErrorHandler:
If Err.Number  0 Then
MsgBox Err.Description, vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
"Error: " & Err.Number, Err.HelpFile, Err.HelpContext
End If
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: DIV/X! durch Array in anderes Format bringen
01.04.2016 15:32:57
Michael

Hallo Sav,
der Code stimmt mit der Fragestellung nicht recht überein.
Am besten lädst Du eine Beispieldatei hoch.
Schöne Grüße,
Michael

AW: DIV/X! durch Array in anderes Format bringen
01.04.2016 15:54:46
Sav
Hallo Michael!
Ich habe das Problem in der beigefügten Datei nachgestellt. Das Makro in dieser funktioniert auch. am 11.11 in Tabelle1 habe DIV/X Werte eingefügt die vom Makro nicht übernommen werden.
Über einen Tipp wie die DIVX Werte in das Tabellenblatt "Auswertungstabelle" übernommen werden können wäre ich Dankbar!
https://www.herber.de/bbs/user/104714.xlsm

Anzeige
AW: DIV/X! durch Array in anderes Format bringen
01.04.2016 17:03:21
Michael
Hi Sav,
die Crux liegt darin, daß Du nnn nur dann hochzählst, wenn die Werte gewisse Kriterien erfüllen. Deshalb bleiben die Zeilen leer.
Deshalb habe ich zwei der Befehle mal umpositioniert:
For nn = 2 To UBound(ArData, 2)
If ArData(1, nn)  "" Then
For n = 2 To UBound(ArData)
nnn = nnn + 1
ArNew(nnn, 1) = ArData(n, 1)
If Not IsError(ArData(n, nn)) Then
If ArData(n, nn)  "" Then
'                    nnn = nnn + 1
'                    ArNew(nnn, 1) = ArData(n, 1)
ArNew(nnn, 2) = ArData(n, nn)
ArNew(nnn, 3) = ArData(1, nn)
ArNew(nnn, 4) = "=WEEKNUM(RC[-1])" 'KW
ArNew(nnn, 5) = "=MONTH(RC[-2])" 'Monat
ArNew(nnn, 6) = "=WEEKDAY(RC[-3])" 'Tag
End If
End If
Next n
End If
Next nn
Die Frage ist, was mit den weiteren Werten bzw. Formeln passieren soll: evtl. kannst Du die IFs mit else-Zweigen versehen.
Damit man besser nachvollziehen kann, was im Array überhaupt passiert, habe ich es direkt vor der eigentlichen Schleife mit "x"en gefüllt (zwischen redim und nnn=1).
So siehst Du in der Ausgabe schön, wo Werte geschrieben wurden (oder eben grad nicht), und auch, daß das Array-redim nicht stimmt.
Probier's erst mal mit der vorhandenen Variante aus, da siehste unten viele, viele "x"e...
Also, hier nochmal das komplette Ding (frißt weniger Speicher als das File):
Option Explicit
Sub Beispiel()
Dim ArData, ArNew()
Dim n&, nn&, nnn&
On Error GoTo ErrorHandler:
With Sheets(Sheets("Auswertungstabelle").Range("B2").Value) 'Ausgangstabelle evtl. anpassen
'Datenbereich evtl. anpassen
'Datenbereich hier ab A2
'bis zur letzten Zelle in Spalte A
'bis zu letzten Zelle in Zeile 1
With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).EntireRow
If .Rows(.Rows.Count).Row  "" Then
For n = 2 To UBound(ArData)
nnn = nnn + 1
ArNew(nnn, 1) = ArData(n, 1)
If Not IsError(ArData(n, nn)) Then
If ArData(n, nn)  "" Then
'                    nnn = nnn + 1
'                    ArNew(nnn, 1) = ArData(n, 1)
ArNew(nnn, 2) = ArData(n, nn)
ArNew(nnn, 3) = ArData(1, nn)
ArNew(nnn, 4) = "=WEEKNUM(RC[-1])" 'KW
ArNew(nnn, 5) = "=MONTH(RC[-2])" 'Monat
ArNew(nnn, 6) = "=WEEKDAY(RC[-3])" 'Tag
End If
End If
Next n
End If
Next nn
Stop
'Ausgabe in neue Tabelle
With ThisWorkbook
With .Sheets("Auswertungstabelle")
.Range("A25", .Cells(.Rows.Count, 6)).Clear
With .Cells(26, 1).Resize(UBound(ArNew), UBound(ArNew, 2))
.Columns(3).NumberFormat = "dd.mm.yyyy"
.Rows(1).Font.Bold = True
.Rows(1).HorizontalAlignment = xlCenter
.FormulaR1C1 = ArNew
.EntireColumn.AutoFit 'Spaltenbreite anpassen
End With
End With
End With
ErrorHandler:
If Err.Number  0 Then
MsgBox Err.Description, vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
"Error: " & Err.Number, Err.HelpFile, Err.HelpContext
End If
End Sub
Schöne Grüße,
Michael

Anzeige
AW: DIV/X! durch Array in anderes Format bringen
06.04.2016 11:42:05
Sav
Hallo Michael,
vielen Dank, hat funktioniert!=)

ok, super, das freut mich,
06.04.2016 16:57:47
Michael
Sav,
und vielen Dank für die Rückmeldung.
Schöne Grüße zurück,
Michael
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige