Onko olemassa jotain makrokomentoa/funktiota, jolla solujen B:B, C:C, D:D ja F:F sisällöt saisi peräkkäin sarakkeeseen A?
Kysyn siksi, että
Sarakkeessa B minulla on osallistujat soluissa B1:B100
Sarakkeessa C minulla on osallistujat soluissa C1:C150
Sarakkeesssa D minulla on osallistujat soluissa D1:D200
Sarakkeeseen A haluaisin listata kaikki osallistujat sarakkeista B-D peräkkäin, aakkosjärjestykseen ja sen jälkeen poistaa kaksoiskappaleet.
Kopioimalla toki onnistuu, mutta......
Sarakkeiden B,C,D,F sisältö peräkkäin A-sarakkeeseen
7
211
Vastaukset 7
- Pete2012
VBA:lla. Laita seuraava koodi ThisWorkbook moduuliin. Kannattaa tehdä ensin kopio alkuperäisestä taulukosta, koska tämä koodi siis myös tyhjentää sarakkeet B:D. Kyseinen koodi ajetaan aina avattaessa tämä tiedosto.
Private Sub Workbook_Open()
Rivi = 1
If ActiveSheet.Cells(Rivi, 1) "" Then Exit Sub
For i = 1 To 100
ActiveSheet.Cells(Rivi, 1) = ActiveSheet.Cells(i, 2)
Rivi = Rivi 1
Next
For i = 1 To 150
ActiveSheet.Cells(Rivi, 1) = ActiveSheet.Cells(i, 3)
Rivi = Rivi 1
Next
For i = 1 To 200
ActiveSheet.Cells(Rivi, 1) = ActiveSheet.Cells(i, 4)
Rivi = Rivi 1
Next
ActiveSheet.Range("B1:D200").ClearContents
ActiveSheet.Columns("A:A").Sort Key1:=Range("A1"), Order1:=xlAscending
End Sub- Eskeli
Kiitokset.
Homma pelittää nyt varsin passelisti.
Nuo osallistujalistat lisääntyvät jatkossa sarakkeisiin E-n , joten tuota laittamaasi koodia muokkaamalla saan jatkossa poimittua osallistujat niistä sarakkeista joissa osallistujia on.
Sub Järjestä()
Dim alue As Range
Dim solu As Range
Dim EiTuplat As New Collection
Dim i As Integer
On Error Resume Next
Range("A:A") = ""
Set alue = Union(Range("B1", Range("B1").End(xlDown)), Range("C1", Range("C1").End(xlDown)), Range("D1", Range("D1").End(xlDown)))
For Each solu In alue
EiTuplat.Add solu.Value, CStr(solu.Value)
Next
On Error GoTo 0
For i = 1 To EiTuplat.Count
Cells(i, 1) = EiTuplat(i)
Next
Columns("A:A").Sort Key1:=Range("A1"), Order1:=xlAscending
End Sub
Keep EXCELing
@Kunde- Eskeli
Tämä ei toiminut ainakaan suoralta kädeltä, liekö vika täällä päässä?
Poimii sarakkeeseen A vain muutamia osallistujia sarakkeesta C ja järjestää ne aakkosjärjestykseen, tuplat poistaen.
Pitää tutkia mikä menee vikaan.
Kiitos avusta kuitenkin!
- kundepuu
koodini poistaa tuplat ja aakkostaa sarakkeissa B,C ja D olevat nimet. Ei väliä kuinka monta nimeä alueella eli dynaaminen alue
- Eskeli taas
Jep..
Ongelmaksi muodostui se, että noissa B, C ja D sarakkeissa oli tyhjiä soluja. Koodi poimi osallistujat ensimmäiseen tyhjään soluun asti ja siitä syystä tuo A sarake jäi vajaavaiseksi.
Korjasin ongelman järjestämällä B, C ja D sarakkeiden sisällöt aakkosjärjestykseen ja nyt homma toimii!
Kiitos avusta!
- kundepuu
tossa versio jos tyhjiä välissä...
Sub Järjestä()
Dim alue As Range
Dim solu As Range
Dim EiTuplat As New Collection
Dim i As Integer
On Error Resume Next
Range("A:A") = ""
Set alue = Union(Range("B1", Range("B65536").End(xlUp)), Range("C1", Range("C65536").End(xlUp)), Range("D1", Range("D65536").End(xlUp)))
For Each solu In alue
EiTuplat.Add solu.Value, CStr(solu.Value)
Next
On Error GoTo 0
For i = 1 To EiTuplat.Count
Cells(i, 1) = EiTuplat(i)
Next
Columns("A:A").Sort Key1:=Range("A1"), Order1:=xlAscending
End Sub
Leep EXCELing
@Kunde
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 1011192
- 78659
Miten uimaportaat voivat maksaa 250 000 euroa?
Ei mitenkään, jokainen täysjärkinen sen tietää. Ei se ihme ettei verovarat riitä. https://www.is.fi/taloussanomat/art-2110607Rakas, ihana rakkain elämäni rakkaus
Minäkin tarvisin ne sanat sinulta. Tosin annat sen tunteen läsnäolollasi.. jos vain me vielä nähdään.. pelkään sitä maai34584- 44552
Jussi kutsuisi eduskunnan koolle, jos joku pyytäisi
Eikös oppositio ole huudellut eduskuntaa koolle jo monta viikkoa? "– En ole saanut siihen liittyvää pyyntöä tai toivett94547- 77540
- 66508
Martinalle onnea
Kaunis Martina täyttää tänään 44 vuotta! Olkoon syntymäpäivä iloa ja onnea täynnä.215485Rakastamisesi tarkoitus
Mikä oli kaiken tarkoitus? En sitä tiedä, en ymmärrä. Olet mielessäni, alati. Olen miettinyt. Ei sillä taida olla merki47468