Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 4530 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: hmarkus
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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Cloud-Dienste
Amazon: Dieser Lkw transportiert Daten in die Cloud (1)

Link von Kraemer zum Thema Cloud-Dienste ...

VB for Applications
Excel VBA Sortierung von Daten (5)

Frage von easy4breezy zum Thema VB for Applications ...

VB for Applications
gelöst VBA-Makro verschwindet nach Speichern (5)

Frage von lupi1989 zum Thema VB for Applications ...

Backup
gelöst Datensicherung von Daten, auf denen die ganze Zeit gearbeitet wird (8)

Frage von Windows11 zum Thema Backup ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...