Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1620to1624
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
Inhaltsverzeichnis

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 :)

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
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})

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige