Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Differenz zweier Teile einer Zahlenkette per VBA

Differenz zweier Teile einer Zahlenkette per VBA
26.04.2018 10:56:45
japes36
Hallo zusammen,
ich möchte Teile zweier Zahlenblöcke miteinander vergleichen und prüfen ob die Differenz 2 ist oder nicht. Es handelt sich immer um die Zahlen in der 'Mitte'.
Im folgenden wäre die Differenz gleich 2 bei 019 und 021. Ich muss das alles in eine FOR NEXT Schleife mit integrierter If THEN Abfrage einbauen. Die Zahlen in der Mitte können zwischen 001 und 132 lauten und ich muss bei einem Vergleich prüfen lassen, ob Differenz der Zahlen in der Mitte 2 ist oder eben nicht. Zahlen werden immer 3stellig wie im Beispiel von der Datenbank ausgegeben, falls das eine Rolle spielt.
Wie 'schäle' ich die mittleren Zahlenblöcke raus, dass ich mit denen rechnen kann?
009-019-30
009-021-30
Dankeschön für die Unterstützung :)
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Split
26.04.2018 11:07:46
Fennek
Hallo,
die Funktion Ar = split(cells(1,1), "-") trennt die 3 Teilen und mit

if Ar1(1) - Ar2(1) = 2 then
kann man die Differenz prüfen.
mfg
AW: Differenz zweier Teile einer Zahlenkette per VBA
26.04.2018 11:11:13
Daniel
Hi
da gibt's mehrere Wege, je nach dem wie dein String hier aufgebaut ist
wenn die Zahlen immer 3-stellig mit Trennzeichen sind:
ZahlMitte = CLng(Mid(Text, 4, 3))
wenn das Trennzeichen immer das "-" ist und die Zahlen auch mal unterschiedlich lang sein können:
ZahlMitte = CLng(Split(Text, "-")(1))
Gruß Daniel
Anzeige
AW: Differenz zweier Teile einer Zahlenkette per VBA
26.04.2018 11:15:12
japes36
Dank Euch beiden :)
hab jetzt mitterweile auch was zusammengebastelt mit
Option Explicit
Sub vergleich()
Dim vTemp1, vTemp2  As Variant
With ThisWorkbook.Worksheets("Tabelle1")
If InStr(.Range("A1").Value, "-") > 0 Then
vTemp1 = Split(.Range("A1").Value, "-")
End If
If InStr(.Range("A2").Value, "-") > 0 Then
vTemp2 = Split(.Range("A2").Value, "-")
End If
End With
MsgBox vTemp2(1) - vTemp1(1)
End Sub 
mal sehen, was von den 3 Beispiuelen jetzt am besten in das Original umfangreichere Makro passt.
Viele Grüße
Anzeige
AW: Differenz zweier Teile einer Zahlenkette per VBA
29.04.2018 10:36:48
Daniel
wobei deine IF-Struktur noch nicht optimal ist.
wenn in einer der beiden Zellen kein passender Wert steht, darf keine Differenz gebildet werden.
Insbesondere dann, wenn du das in einer Schleife machst, hast du sonst ja die alten Restwerte in den Variablen stehen und du bekommst falsche Werte.
besser so:
Sub vergleich()
Dim vTemp1, vTemp2  As Variant
With ThisWorkbook.Worksheets("Tabelle1")
If .Range("A1").Value Like "*-*-*" and .Range("A2").Value Like "*-*-*" Then
vTemp1 = Split(.Range("A1").Value, "-")
vTemp2 = Split(.Range("A2").Value, "-")
If isnumeric(vTem1(1)) and IsNumeric(vTemp2(2)) then MsgBox vTemp2(1) - vTemp1(1)
End If
End With
End Sub

Anzeige
A3: =SUMMENPRODUKT(--TEIL(A1:A2;5;3);{-1;1})
29.04.2018 10:05:59
lupo1
oder auch
C1: =SUMMENPRODUKT(--TEIL(A1:B1;5;3);{-1.1})
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
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