PDA

Vollständige Version anzeigen : Mit Vba Spalten sortieren und unterschiedlich kopieren


Tommy1982
29.05.2013, 20:32
Hallo,
Ich kenne mich mit VBA nicht aus, aber ich weiß dass man das , was ich vorhabe damit machen kann. Ich habe ein Tabellenblatt in dem sind in verschiedenen Zeilen untereinander die Wochentage mehrmals aufgeführt. Nun möchte ich, dass alle Zeilen, die Montag enthalten, in ein weiteres Tabellenblatt kopiert werden ,von a1-a10, alle Dienstage von a12-a22 mit Mittwochen und dem Rest genau so. Ich brauche auch jeweils nur 10 spalten, da mehr Einträge nicht gemacht werden. Danke schon mal im voraus.

Der Tommy1982

Erich G.
30.05.2013, 02:33
Hi Tommy,
im Betreff steht "Mit Vba Spalten sortieren". Im Text deines Beitrags kommt aber kein Sortiervorgang vor.
Soll etwas sortiert werden oder nicht?

Könntest du "ein Tabellenblatt in dem sind in verschiedenen Zeilen untereinander die Wochentage mehrmals aufgeführt"
etwas genauer beschreiben?
Deine derzeitige Beschreibung träfe auch auf das hier zu:
In Tabelle1 steht (jeweils als Text?)
in D15: Dienstag
in D20: Mittwoch
in D22: Mittwoch
in D23: Dienstag
Oder steht in den Zellen jeweils ein Datum?
in D15: 28.05.2013
in D20: 29.05.2013
in D22: 05.06.2013
in D23: 16.04.2013
(Die Wochentage stimmen mit denen oben überein.)

"alle Zeilen, die Montag enthalten, in ein weiteres Tabellenblatt kopiert werden ,von a1-a10"
A1:A10 sind 10 Zellen. Gibt es genau 10 Montage in Tabelle1?
Was soll geschehen, wenn es weniger als 10 Montage gibt, was bei mehr als 10?

Für die Dienstage nimmst du A12:A22. Das sind 11 Zellen, also 1 mehr als für die Montage.
Ist das Absicht? Wie geht es dann mit den Mittwochen weiter?

"Ich brauche auch jeweils nur 10 spalten":
Heißt das: Kopiert werden sollen die Spalten A:J.

An meinen Fragen siehst du sicher, dass es sinnvoll wäre, die Fragestellung anhand eines Beispiels zu präzisieren.
Das sollte sowohl die Ausgangsdaten als auch das gewünschte Ergebnis zeigen.
Du kannst eine Mappe hochladen oder eines der Tools für Tabellendarstellung in Foren nutzen.
Beispiele dazu und Links auf die Tools findest du hier in sehr vielen Beiträgen.

Tommy1982
30.05.2013, 18:31
Hi,
das mit dem Sortieren hab ich vergessen aber vllt geht es ja auch ohne.

Ich habe meine Tabelle mal angehängt die bereits sortiert ist. Ich hoffe ich kann deine Fragen beantworten die mir dann im Anschluss helfen.

Also das Tabellenblatt 2 wird von einer Access2010 DB erstellt.

Anhand von Spalte A soll B-L auf das erste Tabellenblatt kopiert werden. Und zwar in die entsprechenden Bereiche je nach Wochentag.
Das Dienstag 11 Zeilen hatte war ein versehen von mir und ich meinte nicht Spalten sondern Zeilen.
Im Prinzip wird kein Tag mehr als 10 Einträge haben und wenn es weniger sind wäre es auch schön wenn die restlichen Zeilen gelöscht werden würden damit es so aussieht wie jetzt, aber das ist keine Vorraussetzung, das kann ich dann ich ja manuell machen. Ich hoffe das hilft dir um mir dann zu helfen.

Gruß Tommy

Erich G.
02.06.2013, 11:52
Hi Tommy,
das war nicht so ganz das, was ich erwartet hatte...
"... die Fragestellung anhand eines Beispiels zu präzisieren. Das sollte sowohl die Ausgangsdaten als auch das gewünschte Ergebnis zeigen."

Die Daten in DstPlan!61:69 finden sch im Blatt "Daten" nicht wieder,
dafür kommen dann auch die Eingaben aus dem Blatt "Daten" im DstPlan nicht vor.

DstPlan ist aus meiner Sicht eine gräusliche Anhäufung verbundener Zellen.

An einigen Stellen bleibt unklar, was genau von wo nach wo übertragen werden soll.
Hier mal eine tabellarische Darstellung der Übertragungen:

<table border="1" cellspacing="0" cellpadding="0" style="font-family:Arial,Arial; font-size:10pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:66px;" /><col style="width:104px;" /><col style="width:66px;" /><col style="width:173px;" /><col style="width:145px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td><td >C</td><td >D</td><td >E</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td style="font-weight:bold; text-align:center; ">von Sp.</td><td style="font-weight:bold; text-align:center; ">von Daten</td><td style="font-weight:bold; text-align:center; ">in Sp.</td><td style="font-weight:bold; text-align:center; ">in DstPlan</td><td style="font-weight:bold; text-align:center; ">Bemerkung</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td style="text-align:center; ">A</td><td >Wochentag</td><td style="text-align:center; ">A</td><td >Wochentag</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td style="text-align:center; ">B</td><td >von</td><td style="text-align:center; ">A</td><td >Zeit</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td style="text-align:center; ">C</td><td >bis</td><td style="text-align:center; ">A</td><td >Zeit</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td style="text-align:center; ">D</td><td >Teilnehmer</td><td style="text-align:center; ">BC</td><td >Teilnehmende</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td style="text-align:center; ">E</td><td >Form</td><td style="text-align:center; ">DE</td><td >Ausbildungsform</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >7</td><td >&nbsp;</td><td >&nbsp;</td><td style="text-align:center; ">F</td><td >?</td><td >unklar</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >8</td><td >&nbsp;</td><td >&nbsp;</td><td style="text-align:center; ">G</td><td >?</td><td >unklar</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >9</td><td style="text-align:center; ">F</td><td >Ausdr1</td><td style="text-align:center; ">H</td><td >Kenn-Nr.</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >10</td><td style="text-align:center; ">G</td><td >Name_E2</td><td style="text-align:center; ">IJ</td><td >Thema</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >11</td><td style="text-align:center; ">H</td><td >Name_E3</td><td style="background-color:#ffcc00; ">&nbsp;</td><td >&nbsp;</td><td >wohin mit Name_E3?</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >12</td><td style="text-align:center; ">I</td><td >Dienstvorschrift</td><td style="text-align:center; ">KLM</td><td >Dienstvorschrift</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >13</td><td style="text-align:center; ">J</td><td >Anzug</td><td style="text-align:center; ">N</td><td >Anzug</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >14</td><td style="text-align:center; ">K</td><td >Ort</td><td style="text-align:center; ">OPQR</td><td >Ort</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >15</td><td style="text-align:center; ">L</td><td >Durchf&uuml;hrung</td><td style="text-align:center; ">S</td><td >a) Leitung b) Durchf&uuml;hrung</td><td >a) Leitung fehlt</td></tr></table>
Ist die Darstellung so weit ok? Wie sind deine Antworten zu den Bemerkungen?

Nächstes Problem: Die Berechnung des Montags aus der KW. Woher ist diese Formel?
Da kommen alle möglichen Wochentage raus, und mit der DIN-Kalenderwoche hat das gar nichts zu tun.
Schau dir diese Beispiele und Formeln mal an:

<table border="1" cellspacing="0" cellpadding="0" style="font-family:Arial,Arial; font-size:10pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:80px;" /><col style="width:80px;" /><col style="width:142px;" /><col style="width:116px;" /><col style="width:116px;" /><col style="width:38px;" /><col style="width:142px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td><td >C</td><td >D</td><td >E</td><td >F</td><td >G</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td style="text-align:center; ">KW-Jahr</td><td style="text-align:center; ">KW</td><td style="background-color:#ffcc00; text-align:center; ">in 2013 - falsch</td><td style="text-align:center; ">ok</td><td style="text-align:center; ">ok</td><td >&nbsp;</td><td style="background-color:#ffcc00; text-align:center; ">in 2012 - falsch</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td style="text-align:right; ">2013</td><td style="background-color:#ffcc00; text-align:right; ">0</td><td style="background-color:#ffcc00; text-align:right; ">Mo &nbsp;31.12.2012 00:00</td><td style="text-align:right; ">Mo &nbsp;24.12.2012</td><td style="text-align:right; ">Mo &nbsp;24.12.2012</td><td >&nbsp;</td><td style="background-color:#ffcc00; text-align:right; ">Mi &nbsp;28.12.2011 00:00</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td style="text-align:right; ">2013</td><td style="text-align:right; ">1</td><td style="background-color:#ffcc00; text-align:right; ">So &nbsp;06.01.2013 22:38</td><td style="text-align:right; ">Mo &nbsp;31.12.2012</td><td style="text-align:right; ">Mo &nbsp;31.12.2012</td><td >&nbsp;</td><td style="background-color:#ffcc00; text-align:right; ">Di &nbsp;03.01.2012 21:16</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td style="text-align:right; ">2013</td><td style="text-align:right; ">10</td><td style="background-color:#ffcc00; text-align:right; ">So &nbsp;10.03.2013 10:24</td><td style="text-align:right; ">Mo &nbsp;04.03.2013</td><td style="text-align:right; ">Mo &nbsp;04.03.2013</td><td >&nbsp;</td><td style="background-color:#ffcc00; text-align:right; ">Mo &nbsp;05.03.2012 20:49</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td style="text-align:right; ">2013</td><td style="text-align:right; ">30</td><td style="background-color:#ffcc00; text-align:right; ">Sa &nbsp;27.07.2013 07:14</td><td style="text-align:right; ">Mo &nbsp;22.07.2013</td><td style="text-align:right; ">Mo &nbsp;22.07.2013</td><td >&nbsp;</td><td style="background-color:#ffcc00; text-align:right; ">Sa &nbsp;21.07.2012 14:29</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td style="text-align:right; ">2013</td><td style="text-align:right; ">53</td><td style="background-color:#ffcc00; text-align:right; ">Fr &nbsp;03.01.2014 00:00</td><td style="text-align:right; ">Mo &nbsp;30.12.2013</td><td style="text-align:right; ">Mo &nbsp;30.12.2013</td><td >&nbsp;</td><td style="background-color:#ffcc00; text-align:right; ">Do &nbsp;27.12.2012 00:00</td></tr></table><br /><table style="font-family:Arial; font-size:10pt; border-style: groove ;border-color:#00ff00;background-color:#fffcf9; color:#000000; "><tr><td ><b>Formeln der Tabelle</b></td></tr><tr><td ><table border = "1" cellspacing="0" cellpadding="2" style="font-family:Arial; font-size:9pt;"><tr style="background-color:#cacaca; font-size:10pt;"><td >Zelle</td><td >Formel</td></tr><tr><td >C2</td><td >=(<span style=' color:008000; '>(B2/53)</span>*368)+41274</td></tr><tr><td >D2</td><td >=7*DM(<span style=' color:008000; '>(7&1-A2)</span>/7+B2;)+177</td></tr><tr><td >E2</td><td >=DATUM(A2;1;7*B2-3-WOCHENTAG<span style=' color:008000; '>(DATUM<span style=' color:#0000ff; '>(A2;;)</span>;3)</span>)</td></tr><tr><td >G2</td><td >=B2/53*365+40903+2</td></tr></table></td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4 </a>

Wegen der ungerundeten Division in deinen Formeln (Spalten C und G) kommen auch Uhrzeiten mit raus,
die zwar per Formatierung nicht angezeigt wurden, aber z. B. beim Suchen stören würden.

Ich lade dir eine Mappe hoch mit geänderter KW-Berechnung und vielen einzelnen bisher verbundenen Zellen.
Du kannst sie als Grundlage nehmen oder deine Mappe ein wenig anpassen.

Nun noch mal meine Bitte, "... die Fragestellung anhand eines Beispiels zu präzisieren.
Das sollte sowohl die Ausgangsdaten als auch das gewünschte Ergebnis zeigen."
Präzise: Alle Daten aus dem Blatt "Daten" sollten im "DstPlan" an der richtigen Stelle zu sehen sein.
Umgekehrt sollten in "DstPlan" keine "alten" Daten stehen.
(Ich gehe davon aus, dass vor der Übertragung in "DstPlan" die Daten aller Wochentage gelöscht werden sollen.)

Können eigentlich Samstags- oder Sonntags-Daten vorkommen? Dafür ist jetzt nicht einmal eine Leerzeile vorgesehen.

Noch eine Bemerkung: Realnamen solltest du besser vermeiden - den vom HptFw Lars zum Beispiel...

Tommy1982
02.06.2013, 17:07
Oh man,
Ja da hast du recht. Das war ja echt dämlich von mir. Also deine Darstellung ist richtig, ich hab es trotzdem nochmal in den Dienstagbereich aufbereitet.

Auf Daten werden die Daten so von der Datenbank raus gegeben.
Und das mit den Daten on 61 - 69 war ein Fehler von mir, ich hab vergessen es zu löschen.

Und ja DstPlan muss jedesmal gelöscht werden und alle Daten aus Daten übertragen.

Die KW soll der Nutzer selber eintragen, genauso wie die Leitung. Montag, Dienstag Mittwoch usw, bleibt bestehen. Samstag und Sonntag kann was vorkommen, aber das wird dann auch selbstständig eingetragen es sei denn du sagst das man das auch automatisieren kann.

Du hast recht es ist eine hässliche Anhäufung von verbundenen Zellen. Aber da kann leider nichts dran geändert werden das ist von der Führung so vorgegeben.

An der KW Formel kann noch gearbeitet werden das ist nicht das Problem.

Ich hoffe das bringt etwas mehr Licht in die Sache.

MfG

Tommy