Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro zum Kopieren bis eine leere Zeile kommt
#1
Photo 
Hallo Excel Community!

Ich habe folgendes "Problem" und in VBA kenne ich mich leider überhaupt nicht aus  :huh:
Ein Messprogramm liefert an mein Excelsheet eine Datenreihe in der Spalte A in der Form von
12:24:49 01: +000.12 br D2.6 
                02: +0024.2 °C NiCr 
12:24:50 01: +000.12 br D2.6 
                02: +0024.3 °C NiCr 

usw. Dabei können beliebig viele Zeilen mit Werten gefüllt sein. Wie erstelle ich denn jetzt eine Makro, die die Messwerte für den Druck (br) in einer Spalte darstellt und die Spalte daneben mit den Temperaturmesswerten (°C) füllt? Das ganze sollte so lange geschehen, bis in der Spalte A kein neuer Messwert mehr steht.

Ich bedanke mich schon einmal für Rückmeldungen! :blush:

   
Antworten Top
#2
Hallöchen,

ich bin hier mal einen Weg gegangen, wie man es auch manuell erledigen könnte. In Spalte B eine Formel eintragen, die jede zweite Zeile übernimmt, dann Formeln durch Werte ersetzen, Filtern und die leeren Zeilen löschen. Per Makro sieht das so aus:
Code:
Sub Makro2()
'Variablendeclaration
'Long
Dim lRow&
'letzte belegte Zeile feststellen
lRow = Cells(Rows.Count, 1).End(xlUp).Row
'Mit dem Bereich in Spalte B
With Range("B1:B" & lRow)
  'Formel zur Uebernahme jeder zweiten Zeile eintragen
  .FormulaR1C1 = "=IF(MOD(ROW(),2)=1,R[1]C[-1],"""")"
  'ergebnisse kopieren
  .Copy
  '...und Durch Werte ersetzen
  .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
  'Autofilter setzen, nur leere anzeigen
  .AutoFilter Field:=2, Criteria1:="="
  'sichtbare Zeilen loeschen
  .EntireRow.Delete
  'autofilter zuruecksetzen
  .AutoFilter
'Ende Mit dem Bereich in Spalte B
End With
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hallo,

danke André fürs Hochholen.

Das ist mein Vorschlag:
Sub MesswerteAufdroeseln()
 Dim lngZ As Long
 Dim varQ As Variant, varZ As Variant
 varQ = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)).Value
 ReDim varZ(1 To UBound(varQ) / 2, 1 To 2)
 For lngZ = 1 To UBound(varZ)
   varZ(lngZ, 1) = varQ(lngZ * 2 - 1, 1)
   varZ(lngZ, 1) = Mid(varZ(lngZ, 1), InStrRev(varZ(lngZ, 1), ":") + 3)
   varZ(lngZ, 1) = "'" & Left(varZ(lngZ, 1), InStr(1, varZ(lngZ, 1), " "))
   varZ(lngZ, 2) = varQ(lngZ * 2, 1)
   varZ(lngZ, 2) = Mid(varZ(lngZ, 2), InStr(1, varZ(lngZ, 2), ":") + 3)
   varZ(lngZ, 2) = "'" & Left(varZ(lngZ, 2), InStr(1, varZ(lngZ, 2), " "))
 Next lngZ
 Range("B2").Resize(UBound(varZ, 1), UBound(varZ, 2)).Value = varZ
End Sub
Gruß Uwe
Antworten Top
#4
Hallo,

das Ganze ließe sich auch einfach mit Formeln erledigen:

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDE
112:24:49 01: +000.12 br D2.6 12:24:490,1224,2
202: +0024.2 °C NiCr 12:24:500,1224,3
312:24:50 01: +000.12 br D2.6    
402: +0024.3 °C NiCr    

ZelleFormel
C1=WENN(INDEX(A:A;(ZEILE(A1)-1)*2+1)="";"";LINKS(INDEX(A:A;(ZEILE(A1)-1)*2+1);8))
D1=WENN(INDEX(A:A;(ZEILE(A1)-1)*2+1)="";"";WECHSELN(TEIL(INDEX(A:A;(ZEILE(A1)-1)*2+1);15;6);".";",")*1)
E1=WENN(INDEX(A:A;(ZEILE(A1)-1)*2+1)="";"";WECHSELN(TEIL(GLÄTTEN(INDEX(A:A;ZEILE(A1)*2));6;6);".";",")*1)
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste