MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 11.07.2019, 13:53   #1
optik1307
Neuer Benutzer
Neuer Benutzer
Standard Frage - VBA multiplizieren mit kleiner als Vorzeichen

Hallihallo,

Ich bräucht Hilfe bezüglich eines Makros. Ich importiere mithilfe eines Makros ein CSV Datei in Excel.
Im Bereich von H101 bis H111 müssen die Werte von mikrogramm zu milligram umgerechnet werden. Das ist an sich kein Problem. Jedoch sind immer mal wieder Angaben von z.B. < 2,0 angegeben, welche ich nicht einfach umrechnen kann, da ich sonst #WERT oder keine Umrechnung erhalte. Das Problem ist, dass das Sonderzeichen nicht immer in den selben Zellen auftritt (beim ersten Projekt nur in Zelle H102, beim nächsten Projekt H104, H106...) sondern von den Ergebnissen des Imports abhängt. Es ist ebenfalls wichtig, dass das kleiner als Zeichen am Ende wieder vor der umgerechneten Zahl steht.

Daher meine Frage. Gibt es eine Möglichkeit via VBA die Werte mit einem "Vorzeichen/Sonderzeichen" umzurechnen (in meinem Fall *1000)?

Vielen dank schonmal im vorraus

grüße
Optik 1307

Geändert von optik1307 (11.07.2019 um 14:19 Uhr).
optik1307 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 14:56   #2
ReginaR
MOF User
MOF User
Standard

Hi,
Idee wäre beim Import mit

If Left(Wert,1) = ">" or Left(Wert,1) = "<"

abzufragen, ob eins dieser Zeichen vor dem eingentlichen Wert steht.

Wenn ja, dann mit

Cdbl(Mid(Wert,1))

den eigentlichen Wert zu extrahieren, um dann nach der Umrechnung das jeweilige Zeichen wieder davor zu setzen:

">" & neuerWert

Vielleicht denke ich auch zu kompliziert, und jemand hat einen eleganteren Ansatz.

__________________

Gruß
Regina
ReginaR ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 15:07   #3
Mase
MOF Profi
MOF Profi
Standard

Hi,

wie importierst Du denn mit einem Makro.
Textstream oder Import-Assistent ?

__________________

gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 15:52   #4
optik1307
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Ärger

Danke schonmal für die Antworten. Ich bin noch relativ grün hinter den Ohren wenn es um VBA und Makros geht.

Ich habe mir ein kleines Textfeld zum importieren der CSV gemacht mit folgendem code:

Code:

Sub ImportCSV()
  ' lösche Tabelle1 vor Öffnung einer neuen CSV
Sheets("CSV IMPORT").Cells.ClearContents
  
  ' Import CSV
  Dim Dateiname
  Const cstrDelim As String = ";"
  Dim Ws As Worksheet
  Set Ws = ActiveWorkbook.Sheets("CSV IMPORT")
  Dateiname = Application.GetOpenFilename("Textdateien,*.csv")  
  If Dateiname <> False Then
    Application.ScreenUpdating = False
    Workbooks.Open Dateiname, local:=True   
    ActiveSheet.UsedRange.Copy Ws.Cells(4)   
    ActiveWorkbook.Close
    Application.ScreenUpdating = True
  End If
  ' Anführungszeichen raus + vnotbeicalculated zu n.b.
  Dim Zelle As Range
For Each Zelle In Tabelle1.UsedRange
Zelle.Value = Replace(Zelle.Value, "'", "")
Zelle.Value = Replace(Zelle.Value, "vbeiNotCalculated", "n.b.")
Next Zelle
End Sub

Zitat:

Idee wäre beim Import mit

If Left(Wert,1) = ">" or Left(Wert,1) = "<"

abzufragen, ob eins dieser Zeichen vor dem eingentlichen Wert steht.

Wenn ja, dann mit

Cdbl(Mid(Wert,1))

den eigentlichen Wert zu extrahieren, um dann nach der Umrechnung das jeweilige Zeichen wieder davor zu setzen:

">" & neuerWert

Das habe ich auch schon versucht. habe es aber nicht hinbekommen den Code dazu selbst zu schreiben. Irgendwas lief immer schief

grüße
Optik1307
optik1307 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 15:58   #5
ReginaR
MOF User
MOF User
Standard

Hi,
Du kopierst die Daten ja "en bloc", da kannst Du mit meiner Idee nicht zwischen springen.

Lade doch mal eine fertig importierte Datei hoch. Da kann man sicher an Deinen Code noch etwas "andocken".
Schreib mal dazu, in welcher Spalte was gerechnet werden soll.

Wenn es interne Daten sind, bau bitte eine Beispieldatei mit ein paar relevanten Datensätzen.

__________________

Gruß
Regina
ReginaR ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.07.2019, 08:57   #6
optik1307
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hi,

Ich lade direkt mal eine Datei hoch wo mehr als eine Probe vorkommt.
Der Bereich H97 bis H114 sowie I97 bis I114 usw. müssten umgerechnet werden. Wie gesagt is das kleinergleich Zeichen nicht immer bei den selben Werten vorhanden. Dies hängt von den Ergebnissen ab.
Die Umrechnung müsste auch in eine seperate Tabelle oder unter H115 wiedergegeben werden, da ich die Daten ohne Umrechnung auch benötige.

Vielen dank schonmal für alles
Angehängte Dateien
Dateityp: xlsm Test.xlsm (39,9 KB, 3x aufgerufen)
optik1307 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.07.2019, 09:38   #7
HKindler
MOF User
MOF User
Standard

Hi,

verwende zur Umrechnung doch einfach eine Funktion. Also verwende statt
Code:

NeuerWert = AlterWert / 1000
einfach
Code:

NeuerWert = Micro2Milli(Alter Wert)
mit der Funktion
Code:

Function Mikro2Milli(Wert As Variant) As Variant
Dim Temp As Double
If Left(Wert, 1) = "<" Then
    Temp = Val(Replace(Mid(Wert, 2), ",", "."))
    Mikro2Milli = "<" & Temp / 1000
Else
    Mikro2Milli = Wert / 1000
End If
End Function

__________________

Gruß,
Helmut

Win10 (64Bit) / Office365 (32Bit)
HKindler ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.