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
266
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
JOKO OLETTE KUULLET, MITÄ KIURUVEDELLÄ ON SATTUNUT!
Oletteko jo kuulleet, mitä Kiuruvedellä on sattunut, voi hyvänen aika? Aivan viime tuntien aikana olisi sattunut, jos t4012873V*ttuu että mä haluan sua
Jos jotain ihmistä voi kunnolla haluta, niin hän on se. Voi Luoja auta jo! Joku jeesus hjelppa mej!914461Nolointa ikinä miehelle
On ghostata nainen jonka kanssa on ollut ystävä tai ollu orastavaa tapailua pidemmän aikaa. Osoittaa sellaista moukkamai1144134- 513688
Eli jos toisen hiki haisee ns. omaan nenään siedettävältä
Se kertoo hyvästä yhteensopivuudesta. Selvä! Olet mies minun. 🫵🥳533381- 1203367
Sattuma ja muutama väärinkäsitys
vaikuttivat siihen millaiseksi tämä kaikki muodostui. Pienet aikanaan huomaamattomat käänteet. Seuraava näytös on jo tul492282- 432251
Keskusta hajoaa Palojärvi lähtee
Suomen Keskustan ryhmä hajoaa Kemijärvellä. Kalastaja Palojärvi sai tarpeekseen ja loikkasi Sitoutumattomat Aati Virkkul312054On sillä rääpyä
Tuo ex kuntajohtaja Lea Tolonen kehtaakin tulla Ähtäriin. Ajoi laivan Karille. Kari Heikkilä oikaisi taloutta, sai laiva141718