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
284
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
YLE Äänekosken kaupunginjohtaja saa ankaraa arvostelua
Kaupungin johtaja saa ankaraa kritiikkiä äkkiväärästä henkilöstöjohtamisestaan. Uusin häirintäilmoitus päivätty 15 kesä841666Euroopan lämpöennätys, 48,8, astetta, on mitattu Italian Sisiliassa
Joko hitaampikin ymmärtää. Se on aivan liikaa. Ilmastonmuutos on totta Euroopassakin.2691571Asiakas iski kaupassa varastelua tehneen kanveesiin.
https://www.iltalehti.fi/kotimaa/a/33a85463-e4d5-45ed-8014-db51fe8079ec Oikein. Näin sitä pitää. Kyllä kaupoissa valtava2761317Martina lähdössä Ibizalle
Eikä Eskokaan tiennyt matkasta. Nyt ollaan jännän äärellä.1691282- 57895
- 66864
Jos ei tiedä mitä toisesta haluaa
Älä missään nimessä anna mitään merkkejä kiinnostuksesta. Ole haluamatta mitään. Täytyy ajatella toistakin. Ei kukaan em65853Miksi mies tuntee näin?
Eli olen mies ja ihastuin naiseen. Tykkään hänestä ja koskaan hän ei ole ollut minulle ilkeä. Silti ajoittain tunnen kui40841- 42838
Se nainen näyttää hyvältä vaikka painaisi 150kg
parempi vaan jos on vähän muhkeammassa kunnossa 🤤44801