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
281
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
Moikka rakas
Oon miettinyt meidän välistä yhteyttä viime aikoina. En ihan osaa pukea sanoiksi, mitä kaikkea tunnen, mutta halusin vaa6517263Mitä tapahtunut
Poliiseja monta autoa+panssariauto Porista kpäähän päin tänään klo n.20 kuka hurjistunut ?425092HS: Kuka vielä uskaltaa mennä sairaalan ensiapuun?
https://www.hs.fi/mielipide/art-2000011212025.html Tässä on hyvin ajankohtainen mielipidekirjoitus koskien Malmin sairaa3012813- 1552159
Lakea konkurssiin. Asukkaat menettävät asuntonsa
Kuntarahoitus on tänään jättänyt konkurssihakemuksen lakean kaikista kiinteistö osakeyhtiöistä. Kassa on tyhjä, kaikki331873- 221674
Ökyrikas Kurkilahti mussuttaa veroistaan
Pakeni aikoinaan veroja Portugaliin mutta joutui palaamaan takaisin kun Suomi teki verotussopimuksen Portugalin kanssa.1401668Yhdysvalloissa työllisyys paranee, Suomessa työttömyys kasvaa, missä vika?
Miten tämä on mahdollista että 177 000 uutta työllistä tuli USAssa yhdessä kuukaudessa, vaikka Trump on ruorissa? Orpon4091597mahdollista, että olet ollut iltavuorossa
Ja kotiin päästyäsi tulit palstalle etsimään merkkiä minusta, jos kaipaat yhtään minua niin kuin minä sinua Ei mennyt k111447Jos tämän vaan sulkee ja avaa 5 vuoden päästä
Täällä on luultavasti edelleen näitä ihan samoja juttuja. On kuin kauniit ja rohkeat samat jutut junnaa. Heips. 👋🏻 E131359