online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Exceldavid vom 29.06.2022, 14:03 Options

Excel-Daten aus Zellen "XY" neben Zelle "Wert" in anderer Excel-Datei einfügen

Hallo zusammen,

ich habe ein Problem mit dem Zusammenfügen von Excel-Tabellen. Ein HPLC-Analysegerät gibt mir für jede Probe eine Excel-Tabelle aus.
Je nachdem wieviele Komponenten in der Probe sind, steht z.B. in Zelle D2 der Name des Analyten (z.B. Essigsäure) und entsprechend in E2 der Messwert. Bei mehr Komponenten kann aber schon in der nächsten Excel-Datei der Messwert in G2 stehen, weil mehr Komponenten in der Probe sind.
Ich möchte jetzt eine Excel-Tabelle generieren, wo ich z.B. in Spalte D alle Messwerte für "Essigsäure" untereinander ausgebe. Dabei sollte das Ganze natürlich nach der Probennummer, die sich aus der Excel-Dateibezeichnung ergibt (lv2_1, lv2_2, ...), untereinander soritert werden.

Kann mir da jemand helfen?

Viele Grüße,
David


Antwort schreiben

Antwort 1 von finger59 vom 29.06.2022, 14:40 Options

Hi David,

möglicherweise lässte sich das mit einer Pivottabelle erstellen. Aber ohne den tatsächlichen Aufbau Deiner Datei kann ich das so nicht untermauern oder wirklich weiterhelfen.

Falls es Dir möglich ist, dann stelle doch mal eine Beispieldatei am besten mit unterschiedlichen Informationsaufbau, so dass man die wirkliche Struktur erkennen kann.

In diesem Sinne... have a nice Day... Gruß Helmut

Antwort 2 von finger59 vom 29.06.2022, 14:41 Options

Nachtrag....

sollte natürlich noch heißen....

Eine Beispieldatei zur Verfügung stellen... sorry.. war zu schnell...

Antwort 3 von Exceldavid vom 29.06.2022, 17:10 Options

Hallo Helmut,

ich stell mal was ein:

Datei v1.24:
No. PNo Ret.Time Type          Name	Area	Amount	Rel.Ar
min	mV*min	g	%
_____________________________________	___________________	_____________	_______
1  ?      8.37 ML              ?	3,22E+00	?	5,79
2  ?      9.59 M R             ?	8,39E-01	?	1,51
3   2    12.32 MLr   Laktat	2,60E+01	1,50E+01	46,84
4   5    14.61 Mlr   Acetate	6,72E+00	5,71E+00	12,09
5  ?     15.77 MlR             ?	8,53E-01	?	1,54
6   6    17.15 MLr   1,3-PDO	1,74E+01	9,20E+00	31,32
7   7    19.13 MlR   Methanol	1,78E-01	2,92E-01	0,32
8  ?     20.24 MLR             ?	3,26E-01	?	0,59
	------------	------------	------
	5,56E+01	3,02E+01	100


und Datei v1.26

No. PNo Ret.Time Type          Name	Area	Amount	Rel.Ar
min	mV*min	g	%
_____________________________________	___________________	_____________	_______
1  ?      8.14 MLR             ?	2,73E+00	?	3,09
3   2    12.29 MLR   Laktat	6,72E+01	3,87E+01	76,02
4   5    14.60 MLR   Acetate	5,84E+00	4,97E+00	6,61
5   6    17.14 MLR   1,3-PDO	1,20E+01	6,26E+00	13,53
6  ?     20.50 MLR             ?	6,60E-01	?	0,75
	------------	------------	------
	8,84E+01	4,99E+01	100


Äh, ist irgendwie etwas verschoben, aber das Prinzip ist hoffentlich klar. Im ersten Beispiel steht z.B. der Wert für 1,3-PDO in einer anderen Zeile als im zweiten Beispiel.
Diese beiden Werte (und natürlich am Ende auch die anderen Messergebnisse) möchte ich in ein Excel-Blatt in einer Spalte gemäß der Dateibezifferung am Ende untereinander sortieren.

Gruß David

Antwort 4 von Exceldavid vom 29.06.2022, 18:14 Options

Im Prinzip möchte ich in etwa folgendes:
Wenn Zelle XN in "v1.n.xls" enthält "Text", dann (X+2)N kopieren nach "ziel.xls" in Zelle YM, wobei M = n+1.

Dabei ist X eine Spalte in "v1.n.xls", N die Zeile. n ist die laufende Nummer der Datei.
Y und M analog in "ziel.xls".

Antwort 5 von Paul1 vom 30.06.2022, 06:11 Options

Hallo David!


Zu erstellende Tabelle (Zieldatei)

Tabelle von A1 bis E4:
>> A >>>>B >>>>C >>>> D >>>> E
1 Datei Laktat Acetate 1,3-PDO Methanol
2 v1.24 2,60E+01 6,72E+00 1,74E+01 1,78E-01
3 v1.24 z.B.2.Wert
4 v1.26 6,72E+01 5,84E+00 1,20E+01

Quelldatei (Tabelle-Auswertung -vom Analysegerät)

>Die Bezeichnungen Laktat, Acetat etc. befinden sich immer in Spalte D, wenn auch
In anderen Zeilen, je nach Analyse
>Die Werte 2,60E+01, 6,72E+00 etc. befinden sich immer in Spalte E bzw. G, wenn auch
In anderen Zeilen, je nach Analyse

>Ich welcher Spalte befindet sich die Dateibezeichnung z.B. v1.24?

Wenn die von mir vorgeschlagene zu erstellende Tabelle Deinen Vorstellungen entspricht, kann ich mir überlegen, ob es möglich ist, das ganze mit Formeln in die Kiste zu bringen, am besten automatisch.
Ansonsten sollte es mit Makros (VBA) durchzuführen sein, aber da bin ich noch nicht soweit um es auf die Reihe zu bringen.

Ich ersuche Dich nunmehr höflichst um Überprüfung und um ein entsprechendes Feedback, zumal die Entwicklung solcher Abläufe von der Genauigkeit lebt.


mfg

Paul1

Antwort 6 von finger59 vom 30.06.2022, 20:55 Options

Hi David,
habe mal versucht Deine Infos zusammenzustellen.

Schaue Dir das bitte mal an und falls Du da Änderungen brauchst, dann melde Dich bitte.

Ich habe übrigens auf Deine Anfrage im Pager geantwortet....

In der Hoffnung Dir schon mal in die richtige Richtung geholfen zu haben.... have a nice day.... Gruß Helmut

http://www.file-upload.net/download-2638981/Werte-zusammenstellen-P...

Wenn das in die richtige Richtung geht, dann bin ich optimistisch das Dir komplett geholfen werden kann.... ist halt die Frage was Du wirklich wie brauchst... das habe ich noch nicht so ganz gepeilt...
drum... siehe Pager...

Ps... in dem Pager habe ich Link geschrieben... korrekt wäre URL gewesen... sorry...

Antwort 7 von Exceldavid vom 01.07.2022, 10:26 Options

Danke euch beiden schon mal,

ich versuche gerade, die ASCII-Dateien in ein regelmäßiges Excel-Format zu bringen, womit ich bisher leidlich erfolgreich bin. Denn natürlich ist es wichtig, dass die Informationen immer in den gleichen Spalten stehen und die Dateiinformation immer in der gleichen Zelle.

Ich werde dann Dateien hochladen.

Viele Grüße,
David

Antwort 8 von Exceldavid vom 01.07.2022, 12:04 Options

Mit dem folgenden Makro kriege ich prinzipiell alle Dateien in das gleiche Format
[/code]Sub Makro_Vorbereitung()
Makro_Vorbereitung Makro
ChDir "H:\Doktorarbeit\Fermentationen_TUHH\Analytik\Standards Juni_10"
Workbooks.OpenText Filename:= _
"H:\Doktorarbeit\Fermentationen_TUHH\Analytik\Standards Juni_10\DDCAL2.06A", _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Rows("4:5").Select
Selection.Cut
Rows("35:35").Select
ActiveSheet.Paste
Rows("1:14").Select
Range("A14").Activate
Selection.Delete Shift:=xlUp
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(3, 1), Array(7, 1), Array(16, 1), Array(22, 1), _
Array(37, 1), Array(56, 1), Array(69, 1), Array(78, 1)), TrailingMinusNumbers:=True
End Sub


Blöd ist, dass ich hier in den ersten beiden Zeilen die Datei vorgebe
ChDir "H:\Doktorarbeit\Fermentationen_TUHH\Analytik\Standards Juni_10"
Workbooks.OpenText Filename:= _
"H:\Doktorarbeit\Fermentationen_TUHH\Analytik\Standards Juni_10\DDCAL2.06A"
Mir wäre es natürlich lieber, wenn ich das Makro automatiscch auf alle ASCII-Dateien in einem Ordner anwenden könnte. Egal, ich habe mal zwei Beispieldateien hochgeladen.
Hier:
http://www.file-upload.net/download-2640062/S1_5_RI.xls.html
http://www.file-upload.net/download-2640063/S1_1_RI.xls.html

Dabei ist in der ersten Datei in Blatt zwei die Art der Ergebnisdarstellung gezeigt, wie ich sie gerne hätte.
Die Dateiinfo für die Probe steht immer in C21, die Namen der Stoffe in Spalte E, die umgerechneten Messwerte (jetzt ohne Kalibration =0) in Spalte G.
Die Dateiinfo wird immer die Form haben: xy_Probennummer. Anhand der Probennummer soll die Zeile vorgegeben werden.

Gruß David

Antwort 9 von finger59 vom 01.07.2022, 15:06 Options

Hi David,

a) bzgl. Deines Dateinamensproblems - so musst Du ja das Makro jedesmal zu Fuß abändern....
Frage... ich nehme an, dass es einen bestimmten Zeitrahmen gibt, in dem diese Datei gespeichert wird (z.B. täglich).
Falls es nur eine pro Tag oder Woche oder Monat geben würde, so könntest Du in dem Verzeichnis immer die aktuellste Datei abfragen und könntest das Namensproblem damit umgehen.

b) zu welchem Zeitpunkt benötigst Du denn Deine Zusammenstellung? täglich, am Wochenende, am Monatsende?

c) In S1_5 steht in Zeile 11 ein Ergebnis... soll das auch irgendwo mit integriert werden?

d) Frage ich mich immer noch wie genau Dein Ergebnis aussehen soll... wäre es Dir möglich eine Ergebnisdatei zusammenzustellen aus den beiden Musterdateien S1_ 5 und S1_1 und sie als download bereitzustellen. Dann wissen alle die Dir helfen möchten auch sofort was Du erreichen möchtest.

Wieder ein paar Fragen mehr, aber ich denke es wird eine Lösung für Dich geben....

In diesem Sinne... have a nice Day... Gruß Helmut

Antwort 10 von Paul1 vom 01.07.2022, 17:14 Options

Hallo David!

Wie Du bereits mitgeteilt hast, sind in der Analyse-Excel Datei
Dateiname z.B. 1.26
Name der Stoffe z.b. Laktat
Messwerte: 2,60E+01 (für Laktat)
Alles jeweils in der gleichen Spalte!
Wobei es für die Lösung völlig egal ist, in welcher Spalte es in der Analyse Excel-Datei steht

Sagen wir z.B.:
Dateiname = C 21
Name der Stoffe = Spalte D
Messwerte = Spalte E

Am einfachsten wäre es die Auswertung gleich in der Analysedatei (Tabelle) durchzuführen.

Beispiel:
K1 Datei (Überschrift)
L1 Laktat (Überschrift)
M1 Acetate (Überschrift)
usw.....

in L2 gib folgende Formel ein

=WENN(D2="Laktat";E2;"")

An der Lasche herunterziehen bis L?, je nachdem wie viel Zeilen die Analyse haben kann.

Das gleiche in M2 nur mit „Acetate“

Den Bereich von K1 bis R ? je nachdem wie viel Spalten und Zeilen die Auswertung braucht (bzw. max, sein soll) kannst Du kopieren und mit Inhalte einfügen (entweder alles oder nur Werte etc.) in eine eigene Tabelle einfügen.

Nächste Analyse Datei (Excel Tabellenblatt) öffnen:
>Den Bereich von K1 bis R? in der vorherigen Analyse kopieren
>mit Inhalte einfügen (nur Formeln anhaken)in K1
>somit stehen die Überschriften mit den Werten der neuen Analyse von K1 (eigentlich ab K2) im Bereich K1 bis ?

Es sollte nur ein Anhaltspunkt sein, wie es gelöst werden könnte auf Grund der mir zur Verfügung stehenden Informationen.

Schöne Grüße

Paul1

Antwort 11 von Paul1 vom 01.07.2022, 18:04 Options

Hallo David!

Nachtrag:

In K2 ist einzugeben: =C21

nochmals schönen Gruß

Paul1

Antwort 12 von Exceldavid vom 06.07.2022, 11:25 Options

Die Aufgabe nähert sich hoffentlich einem Ende. Paul, das klappt wunderbar mit der "WENN"-Formel. Da ich das Ergebnis in genau einer Zelle haben will, habe ich die Formel noch ein bisschen modifiziert:
=WENN(C12="Laktat";D12)+WENN(C13="Laktat";D13)+...

Zu den Nachfragen von Helmut: Allerdings bleibt das Problem mit dem Makro zur ASCII-Dateiauswertung. Da es schon sein kann, dass ich mal mehrere Datien gleichzeitig auswerten möchte, wäre es gut, wenn das Makro auf alle Dateien eines Ordners angewendet wird. Grundsätzlich klappt das mit folgendem Code von http://excel2007tips.blogspot.com/2007/05/no-applicationfilesearch-...:
Option Explicit
Sub Open_All_Files()
Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String

sPath = "C:\Documents and Settings\Roy Cox\My Documents\" 'location of files
ChDir sPath
sFil = Dir("*.xlsx") 'change or add formats
Do While sFil <> "" 'will start LOOP until all files in folder sPath have been looped through Set oWbk = Workbooks.Open(sPath & "\" & sFil) 'opens the file

'do something

oWbk.Close True 'close the workbook, saving changes
sFil = Dir
Loop ' End of LOOP
End Sub 


Sehr einfach umgesetzt sieht es dann so aus bei mir:
Sub Open_All_Files()
Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String

sPath = "C:\Test\" 'location of files
 ChDir sPath
 sFil = Dir("*.*") 'change or add formats
Do While sFil <> "" 'will start LOOP until all files in folder sPath have been looped through
    Workbooks.OpenText (sPath & "\" & sFil), Origin:=xlMSDOS, _
        StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(22 _
        , 1), Array(37, 1), Array(57, 1), Array(69, 1)), TrailingMinusNumbers:=True
oWbk.Close True 'close the workbook, saving changes
sFil = Dir
Loop ' End of LOOP
End Sub

Nur klappt das nicht so ganz, da nach der ersten Datei abgebrochen wird und ein Laufzeitfehler angegeben wird. Fehlerhaft ist die Zeile
oWbk.Close True
womit vermutlich zwar
Workbooks.Open
aber nicht
Workbooks.OpenText
verarbeitet werden kann.
Hat jemand Ahnung von der Programmierung und kann sagen, wo der Fehler liegt?
Viele Grüße,
David

Antwort 13 von malSchauen vom 06.07.2022, 12:29 Options

Hi,

Du hast den ObjectVerweis beim Öffnen vergessen. Eine Änderung, wie folgt, sollte das zum laufen bringen. ( siehe Kommentar im org. CodeTeil)

.
.
.
Do While sFil <> "" 'will start LOOP until all files in folder sPath have been looped through
    Set oWbk = Workbooks.OpenText (sPath & "\" & sFil), Origin:=xlMSDOS, _
.
.
.


bye
malSchauen

Antwort 14 von malSchauen vom 06.07.2022, 12:39 Options

Hi,

Ups, ungetestet posten rächt sich halt...
Das passt so einfac doch nicht.


bye
malSchauen

Antwort 15 von malSchauen vom 06.07.2022, 13:11 Options

Hi,

Die Workbooks.OpenText-Methode hat wohl kein WorkBook-Object als Rückgabewert (Im Gegensatz zur Workbooks.Open-Methode). Da aber das mit der OpenText-Methode geöffnete Workbook in diesem Ablauf das aktive Workbook ist, sollte folgende Änderung passen:
.
.
.
        , 1), Array(37, 1), Array(57, 1), Array(69, 1)), TrailingMinusNumbers:=True
ActiveWorkbook.Close True 'close the workbook, saving changes
sFil = Dir
Loop ' End of LOOP
End Sub

Sollte es innerhalb der Schleife einmal notwendig werden (warum auch immer) zwischen verschiedenen WBs zu wechseln, könnte man auch direkt nach dem Öffnen einen ObjectVerweis auf das WB setzen. Dies sähe bei mir dann aus wie folgt:

.
.
Do While sFil <> "" 'will start LOOP until all files in folder sPath have been looped through
    Workbooks.OpenText Filename:=sPath & "\" & sFil, Origin:=xlMSDOS, _
        StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(22 _
        , 1), Array(37, 1), Array(57, 1), Array(69, 1)), TrailingMinusNumbers:=True
    Set oWbk = ActiveWorkbook
    'weiterer Code
    'in dem auch andere
    'offene WBs aktive
    'werden können
oWbk.Close False 'close the workbook, saving changes
sFil = Dir
Loop ' End of LOOP
End Sub


bye
malSchauen
... der es nun aber auch getestet hat... ;-)

Antwort 16 von malSchauen vom 06.07.2022, 13:17 Options

Hi,

... und dabei beim Code-Einfügen ins Forum leider übersehen hat, dass er zu Testzwecken beim Schliessen den SaveChanges-Parameter auf False gesetzt hat. Den dann also, wenn gewünscht, bitte wieder auf True setzen.

bye
malSchauen
... der sich wohl besser wieder schlafen legt...

Ähnliche Themen

variablenwert aus vba-programmierung in zelle bei excel einfügen
mabo  10.06.2009 - 267 Hits - 2 Antworten

Excel Daten automatisch in einer anderen Excel Datei kopieren
Dutchi1972  01.10.2009 - 1325 Hits - 3 Antworten

Werte in Zelle auf mehrere Zellen aufteilen in Excel 2007
knorkmaster  22.02.2010 - 366 Hits - 2 Antworten

Excel 2007 - Wert einer Zelle mit einer Eingabe vergleichen und...
AlexBrother  01.04.2010 - 429 Hits - 9 Antworten

Tabellenfeld aus Word-Datei auslesen und in Excel-Datei einfügen
jojo7  09.07.2010 - 559 Hits - 20 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026