Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[vba / macro] data transponeren..

Pagina: 1
Acties:

  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
ik zit even met het volgende, ik moet van de volgende data via een macro in excel
KWGRPGRNALU
ART10,25100150200
ART20,18250300350

het volgende maken (in een nieuwe sheet:
ART1/0,25/GRP100
ART1/0,25/GRN150
ART1/0,25/ALU200
ART2/0,18/GRP250
ART2/0,18/GRN300
ART2/0,18/ALU350


nu heb ik het volgende begin gemaakt om de getallen onder elkaar te krijgen
Visual Basic .NET:
1
2
3
4
5
6
7
For x = 1 To 10
ActiveCell.Offset(0, 0).Range("A" & x & ":C" & x).Select
    Selection.Copy
    Sheets("trans_gegevens").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
Next x


nu wil ik ook de beschrijving van "ART1..etc." oke maken (zoals in bovenstaande tabel te zien), ik heb het idee dat dit absoluut niet moeilijk is, ik kom er alleen niet echt uit... 8)7

Heb al wat rondgezocht op google, ik vindt alleen niet het juiste. Heeft iemand een goede resource?

A smooth sea never made a skilled sailor


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Transponeren is rijen en kolommen omwisselen, maar dat is niet wat jij nodig hebt ;)

Wat jij nodig hebt zijn alle combinaties van je artikelen (bestaande uit 'ARTx' + het KW-getal voor ARTx) met de drieletterige codes (GRP, GRN, ALU). In pseudo-code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
resultaatrij := 1
for each(rij in rijen)
  artikel = ARTx + '/' + KW-getal
  for each kolom in { GRP, GRN, ALU }
    key = artikel + '/' + kolom.name
    value = readcell(rij, kolom)

    writecell(resultaatrij, 1, key)
    writecell(resultaatrij, 2, value)
    resultaatrij := resultaatrij + 1
  end for
end for

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:15

Creepy

Tactical Espionage Splatterer

Oeh.. Excel. Daar kunnen ze je in Officesuites en -software beter bij helpen :)

Move Programming -> Officesuites en -software

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
MrBucket schreef op vrijdag 06 maart 2009 @ 22:35:
Transponeren is rijen en kolommen omwisselen, maar dat is niet wat jij nodig hebt ;)

Wat jij nodig hebt zijn alle combinaties van je artikelen (bestaande uit 'ARTx' + het KW-getal voor ARTx) met de drieletterige codes (GRP, GRN, ALU). In pseudo-code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
resultaatrij := 1
for each(rij in rijen)
  artikel = ARTx + '/' + KW-getal
  for each kolom in { GRP, GRN, ALU }
    key = artikel + '/' + kolom.name
    value = readcell(rij, kolom)

    writecell(resultaatrij, 1, key)
    writecell(resultaatrij, 2, value)
    resultaatrij := resultaatrij + 1
  end for
end for
thanks! ik ga hiermee wat rommelen!

edit: dit is hem geworden (uiteindelijk vrij simpel...:D)
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub ERP()
    Dim ColumnCount As Integer
    Dim RowCount As Integer
    Dim NewRow As Integer
    Dim Article As String
    Dim ArticleData As String
    Dim ws as Worksheet

    On Error Resume Next
    NewRow = 1

    For RowCount = 2 To 3 'Selection.Rows.Count
        For ColumnCount = 3 To 5 'Selection.Columns.Count
            Sheets("Blad1").Select
            
            Article = Cells(RowCount,1) & "/" & Cells(RowCount,2) & "/" & Cells(1,ColumnCount)      
            ArticleData = Cells(RowCount,ColumnCount)
    
            Sheets("erpdata").Select
            
            Cells(NewRow,1) = Article
            Cells(NewRow,2) = ArticleData
            NewRow = NewRow + 1
        Next ColumnCount
    Next RowCount
End Sub

[ Voor 31% gewijzigd door wboard op 08-03-2009 19:40 ]

A smooth sea never made a skilled sailor