Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Makro zum transponieren von Daten

Frage Microsoft Microsoft Office

Mitglied: Quercus

Quercus (Level 1) - Jetzt verbinden

28.02.2013, aktualisiert 01.03.2013, 5184 Aufrufe, 7 Kommentare

Hallo bräuchte hilfe in VBA
als absoluter Neuling in VBA scripts

hab hier eine Tabelle in Excel 2007 in der in Spalten A - G daten mit gleichen Artikelnummern stehen und verschiedenen Mengen, Preisen Kunden und Lagerbeständen.

dieses sollte so transponiert werden das ab Spalte I Die Artikel Nummer steht und danach in folge die dazugehörigen Mengen,Preis,Kunde lagerbestand Artikelgruppe steht.

wenn möglich sollte auch ein Start Script schaltfläche vorhanden sein ;)

siehe Screenshot:

038024294cff2455373b661f24827b78 - Klicke auf das Bild, um es zu vergrößern

Gruß Quercus
Mitglied: bastla
02.03.2013, aktualisiert um 20:12 Uhr
Hallo Quercus!

Unter der Voraussetzung, dass die Quelldaten nach Artikelnummern sortiert sind (so interpretiere ich Deinen Screenshot) und es genügt, die Werte zu übertragen (BTW: "transponieren" würde bedeuten, aus Zeilen Spalten zu machen), könnte das so gehen:
01.
Sub Uebertragen() 
02.
QUeberzeile = 1 'Zeile mit Überschrift für Quelldaten 
03.
QAbSpalte = "A" 'Spalte, ab der die Quelldaten eingetraben sind 
04.
Spalten = 7 'Spaltenanzahl der Quelldaten 
05.
ZUeberZeile = 1 'Zeile für Überschriften des Zielbereichs 
06.
ZAbSpalte = "I" 'Zielbereich beginnt in dieser Spalte 
07.
 
08.
Ueber = Cells(QUeberzeile, QAbSpalte).Resize(1, Spalten).Value 'Überschriften zwischenspeichern 
09.
 
10.
QZeile = QUeberzeile + 1 'erste Qelldatenzeile ist unmittelbar unter Überschrift 
11.
ZZeile = ZUeberZeile 'Zieldaten werden ohne Zeilenabstand unter die Überschrift geschrieben 
12.
ZAbSpalte = Columns(ZAbSpalte).Column 'Spalte wird in numerischer Form benötigt 
13.
 
14.
Artikel = Cells(QZeile, QAbSpalte).Value 'Artikelnummer lesen 
15.
Do While Artikel <> "" 'Ende, wenn keine Artikelnummer mehr gefunden wird 
16.
    If Artikel <> ArtikelVorher Then 'Wenn neue Artikelnummer, ... 
17.
        ZZeile = ZZeile + 1 '... Zieldaten in nächste Zielzeile schreiben ... 
18.
        ZSpalte = ZAbSpalte '... und dabei wieder in der ersten Spalte des Zielbereichs beginnen 
19.
        ArtikelVorher = Artikel 'Artikelnummer merken 
20.
    End If 
21.
    Cells(ZUeberZeile, ZSpalte).Resize(1, Spalten).Value = Ueber 'Überschrift für Zieldaten eintragen 
22.
    Cells(ZZeile, ZSpalte).Resize(1, Spalten).Value = Cells(QZeile, QAbSpalte).Resize(1, Spalten).Value 'Werte aus Quellbereich in Zielbereich übernehmen 
23.
     
24.
    QZeile = QZeile + 1 'nächste Quelldatenzeile 
25.
    ZSpalte = ZSpalte + Spalten 'nächste Zieldatenspalte 
26.
    Artikel = Cells(QZeile, QAbSpalte).Value 'Artikelnummer lesen 
27.
Loop 
28.
End Sub
Die Schaltfläche zum Starten lässt sich einfach als Grafik oder Clipart einfügen bzw als "Form" erstellen; dann nur noch per Rechtsklick "Makro zuweisen...".

Grüße
bastla

P.S.: Wozu soll die ganze Aktion eigentlich gut sein? Zumeist ist eher die gegenteilige Vorgangsweise (Stichwort "Normalisierung") gefragt ...
Bitte warten ..
Mitglied: Quercus
02.03.2013 um 21:13 Uhr
Danke Bastla ;)

bin gerade soweit am testen vom Makro

wozu das ganze dienen soll... nun anhand der zeilen kann ich danach rausfiltern bei welcher Artikelnummer der günstigste
Kunde im vergleich zum Ek und Vk Preis anhand der Mindestmenge zur vorhandenem Lagerbestand ist.

bei ca 30000 Gespeicherten Artikeln und zig Kunden, Lieferanten.

Grüße
Quercus
Bitte warten ..
Mitglied: bastla
02.03.2013, aktualisiert um 21:59 Uhr
Hallo Quercus!
bei ca 30000 Gespeicherten Artikeln und zig Kunden, Lieferanten.
Ich hoffe, Dein Excel hat genügend Spalten ...

Grüße
bastla
Bitte warten ..
Mitglied: Quercus
03.03.2013 um 08:37 Uhr
Hi bastla,

also beim test hatte es genügend spalten

was mir noch aufgefallen ist gibt es eine möglichkeit das bevor die daten ab I reingeschrieben werden die alten daten aus diesen Spalten gelöscht werden. das wenn da wirklich noch Daten vorhanden sind das Makro auch wirklich neu reinschreiben muss?

weil gestern beim 2 testlauf ist mir aufgefallen wenn in eine spalte keine neuen daten reingeschrieben werden aber hier schon alte Daten vorhanden sind diese weiterhin bestehen bleiben.

alternativ das ganze sonst auf ein neues tabellen Blatt reinschreiben lassen das geht schneller zu löschen ;) ginge das?

Gruß

Quercus
Bitte warten ..
Mitglied: 64748
03.03.2013 um 08:51 Uhr
Guten Morgen zusammen,

ich habe diesen Thread eine Weile beobachtet weil mich das Thema interessiert hat. Nun habe ich eigentlich noch nicht vollständig verstanden, was dass Ziel dieser Sache ist. Trotzdem hier eine Frage: wäre das nicht eine Aufgabe, die man einfacher mit einer Datenbank, sprich Access löst? wie hoch würdet Ihr den Lern- und Arbeitsaufwand einschätzen, um in diesem Falle die Datenbank zu erstellen, die Daten in diese zu importieren und dann die gewünschte Abfrage zu machen? Könnte sich das lohnen?

Hintergrund der Frage ist, dass die meisten Leute mit Excel relativ fit sind, die Access-Kenntnisse jedoch meist deutlich geringer.

Gruß

Markus
Bitte warten ..
Mitglied: bastla
03.03.2013 um 14:04 Uhr
Hallo Quercus!

Mit dieser Version kannst Du die Zieldaten sowohl ins gleiche, als auch in ein anderes Blatt schreiben - gelöscht werden vorweg die Spalten von "ZAbSpalte" bis zum Blattende:
01.
Sub Umstellen() 
02.
QTabelle = "Tabelle1" 'Quelltabelle 
03.
QUeberzeile = 1 'Zeile mit Überschrift für Quelldaten 
04.
QAbSpalte = "A" 'Spalte, ab der die Quelldaten eingetraben sind 
05.
Spalten = 7 'Spaltenanzahl der Quelldaten 
06.
ZTabelle = "Tabelle2" 'Zieltabelle 
07.
ZUeberZeile = 1 'Zeile für Überschriften des Zielbereichs 
08.
ZAbSpalte = "I" 'Zielbereich beginnt in dieser Spalte 
09.
 
10.
Set QTab = Worksheets(QTabelle) 
11.
Set ZTab = Worksheets(ZTabelle) 
12.
Ueber = QTab.Cells(QUeberzeile, QAbSpalte).Resize(1, Spalten).Value 'Überschriften zwischenspeichern 
13.
 
14.
QZeile = QUeberzeile + 1 
15.
ZZeile = ZUeberZeile 
16.
ZAbSpalte = Columns(ZAbSpalte).Column 
17.
ZTab.Range(ZTab.Columns(ZAbSpalte), ZTab.Columns(ZTab.Columns.Count)).ClearContents 'Spalten im Zielbereich löschen 
18.
 
19.
Artikel = QTab.Cells(QZeile, QAbSpalte).Value 
20.
Do While Artikel <> "" 
21.
    If Artikel <> ArtikelVorher Then 
22.
        ZZeile = ZZeile + 1 
23.
        ZSpalte = ZAbSpalte 
24.
        ArtikelVorher = Artikel 
25.
    End If 
26.
    ZTab.Cells(ZUeberZeile, ZSpalte).Resize(1, Spalten).Value = Ueber 
27.
    ZTab.Cells(ZZeile, ZSpalte).Resize(1, Spalten).Value = QTab.Cells(QZeile, QAbSpalte).Resize(1, Spalten).Value 
28.
     
29.
    QZeile = QZeile + 1 
30.
    ZSpalte = ZSpalte + Spalten 
31.
    Artikel = QTab.Cells(QZeile, QAbSpalte).Value 
32.
Loop 
33.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: Quercus
03.03.2013 um 14:41 Uhr
Hi bastla,


geht super


besten dank dir.

zu der frage von Hmarkus:

Hintergrund dieser ganzen Aktion ich muss aus den Einzelnen Artikeln bei einigen Kunden aus dem Ek preis anhand von Geweichtsangaben zum Artikel die dazugehörigen Zuschlags Preise herrausrechnen um danach den Ek mit dem Vk vergleichen zu können.

und wie deine Aussage ja sagt mit Excel sind mehr leute geübt als im umgang mit Access

die ganzen Daten selbst kommen aus einer SQL Datenbank wo es da schon schwierig war die einzelnen Daten herrauszubekommen.

Gruß

Quercus
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
S-Verweis mit Wenn-Und, Transponieren????
Frage von TheDukeOfOGHooDMicrosoft Office6 Kommentare

Hallo zusammen, ich habe folgendes Problem (und es ist schon kompliziert es überhaupt verständlich zu erklären): Wie in der ...

Microsoft Office
Zelleninhalte mit bestimmtem Abstand transponieren mit Schleife
gelöst Frage von KrenzJMicrosoft Office4 Kommentare

Guten Mittag alle miteinander, und nun direkt zu meiner Frage. Ich möchte auch noch daraufhin weisen, dass ich leider ...

Microsoft Office
Probleme bei Makro in Outlook zum kopieren von Daten aus Mail in Excel
gelöst Frage von fiAScoMicrosoft Office6 Kommentare

Servus beinander Ich habe eine Frage bzw möchte folgendes haben/machen. Ich würde gern ein Makro in Outlook haben, welches ...

Microsoft Office
Excel Makro zum Einfügen von Daten aus anderen Excel Dateien
gelöst Frage von Tom77777Microsoft Office4 Kommentare

Hallo, ich bin neu hier im Forum und kenne mich leider nicht so gut mit Excel/VBA aus. Im Zuge ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 10 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 10 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 18 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server15 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...