Hei!
Ongelmani liittyy kahden taulukon tietoihin jotka pitäisi yhdistää yhteen tauluun.
Elikkä ensimmäisessä taulukossa A sarakkeessa on tyyppinumero ja B sarakkeessa osan tieto. Koska osan tietoja on paljon niin tyyppinumeroita on peräkkäin 3 -18 kappaleita ja sen jälkeen B sarakkeessa on osan tiedot. Esimerkin vastaavalla tavalla:
Tyyppin. Osan tieto
111 mutteri M12
111 Pirkka 2 kpl
111 pultti M12
112 Mutteri M10
112 Prikka 4 kpl
112 Pultti M10
112 Punainen maali
112 mittari
113 kotelo
113 keltainen maali
Jne….
Nämä tiedot pitäisi siirtää toiseen taulukkoon (esim toiseen välilehteen), niin että A sarakkeessa pysyisi tyyppinumero, mutta kaikki osan tiedot siirrettäisiin transporen komennon avulla vaakatasoon, niin että ensimmäinen tieto tulee b sarakkeeseen, toinen tieto tulee c sarakkeeseen, kolmas tulee d sarakkeeseen jne.
Tyyppinumeroita on pelkästään 450 kappaleita ja osan tietoja on muutama tuhat.
Jos jollakin olisi tähän oikeaa makroa, niin olisin enemmänkin kuin kiitollinen.
Tietojen siirto tyyppinumeron perusteella
1
273
Vastaukset
moduuliin...
muuttele taulukoiden nimet sopiviksi
Option Explicit
Dim EiTupla As New Collection
Sub Kopioi()
Dim Tiedot As Variant
Dim Alue As Range
Dim i As Integer
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Worksheets("Sheet1").Activate
Worksheets("Sheet2").Cells.Clear
PoistaTuplat
For i = 1 To EiTupla.Count
Set Alue = EtsiJaSiirrä(EiTupla(i), Columns("A")).Offset(0, 1)
Tiedot = Alue
Tiedot = Application.WorksheetFunction.Transpose(Tiedot)
Range("Sheet2!A" & i) = EiTupla(i)
Range("Sheet2!B" & i).Resize(Alue.Columns.Count, Alue.Rows.Count) = Tiedot
Next i
Worksheets("Sheet2").Cells.EntireColumn.AutoFit
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Sub PoistaTuplat()
Dim solu As Range
Dim Vika As Double
On Error GoTo virhe
Vika = Range("A65536").End(xlUp).Row
For Each solu In Range("A1:A" & Vika)
If Not IsEmpty(solu) Then
EiTupla.Add solu.Value, CStr(solu.Value)
End If
Next solu
Exit Sub
virhe:
Resume Next
End Sub
Function EtsiJaSiirrä(Haettava As Variant, _
Hakualue As Range) As Range
Dim solu As Range
Dim ekaosoite As String
With Hakualue
Set solu = .Find( _
What:=Haettava, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)
If Not solu Is Nothing Then
Set EtsiJaSiirrä = solu
ekaosoite = solu.Address
Do
Set EtsiJaSiirrä = Union(EtsiJaSiirrä, solu)
Set solu = .FindNext(solu)
Loop While Not solu Is Nothing And solu.Address ekaosoite
End If
End With
End Function
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Saako kaunis ihminen parempaa kohtelua?
Onko kauniin ihmisen elämä "helpompaa" kuin tavallisen näköisen ihmisen? Olen kuullut väittämän, että kaunis ihminen saa1363797- 122576
En rehellisesti usko et oisit
Sekuntiakaan oikeasti mua kaivannut. Tai edes miettinyt miten mulla menee. Jotenkin todennäköisesti hyödyt tästäkin jos371995Näin sinusta taas unta!
Unessa olin pakahtuneesti rakastunut sinuun. Olimme vanhassa talossa jossa oli yläkerran huoneissa pyöreät ikkunat. Pöly211741Paljonko aikaa on kulunut siitä kun viimeksi tapasit hänet?
Päiviä? Viikkoja? Kuukausia? Vuosia?311536- 1251511
En muuttaisi sinusta mitään
Ensin olit etäinen ja yritin pysyä tutkan alapuolella. Mutta ei silmiltäsi jää mitään huomaamatta, kuten minulla ei kuul101321- 141266
Se oli siinä sitten
Yhdysvaltain presidentti Donald Trump on määrännyt kaiken maan Ukrainalle toimittaman sotilaallisen tuen tauolle, kertoo4881265- 821252