Avatar billede ceacer Praktikant
22. marts 2006 - 23:44 Der er 39 kommentarer og
1 løsning

sammenlægning af kolonner

Jeg har to kolonner med navne og blanke celler ind i mellem. Jeg vil gerne have at der dannes en ny kolonne hvor navnene føres over uden blanke celler så navnene står under hinanden. Kolonnerne med navne er B og C og går fra række 6 til 200 og de skal flyttes over i A.
Avatar billede enriko Nybegynder
22. marts 2006 - 23:59 #1
kan du ikke trykke på helt til venstre på det tal som står for rækken ? du har jo tallene til venstre og bogstaverne oppe . så hvis du  kunne trykke på  et tallene som du skulle flytte og højre klikke med musen og tryk på kopier og derefter gå hen til den række du vil sætte og trykke sæt ind

ærlig talt så ved jeg ikke hvor du skal kopier fra til hvor men det havde været rart hvis du kunne tage et billed af skærmen med print screen på tastauret og derefter sætte det herinde


start exel op og find den dokument du skulle flytte om på

tryk på tasterne sammetidig CTRL  +  ALT + PRINT SCREEN

print screen kan du finde på tasturet helt til højre øverst

derefter  kan du åbne din paint program , tryk på CTRL + V så kan du se billedet af din skærm . gem det på din skivebord

brug internet siden http://www.imageshack.us/ til oploade billedet derefter kan du skrive linket til siden herinde efter du har oploadet det vil være til stor hjælp
Avatar billede vejmand Juniormester
23. marts 2006 - 05:40 #2
Hvis jeg har forstået spørgsmålet rigtig, har du henholdsvis for- og efternavn i kolonnerne B og C.
F.eks. "Hans" i B6 og "Hansen" i C6
Hvis dette er rigtig, kan du gøre følgende, for at få A6 til at vise "Hans Hansen":

Markér kolonnerne B og C
Tryk ctrl+G
Tryk på "Special"
Brug funktionen tomme celler
Brug derefter crtl+minus for at slette de tomme rækker

Indtast =(B6&" "&C6) i A6
Avatar billede vejmand Juniormester
23. marts 2006 - 06:12 #3
Glemte lige:

Kopiér derefter formlen fra A6 nedad i kolonne A
Avatar billede excelent Ekspert
23. marts 2006 - 06:30 #4
'Indsæt i modul

Sub join()
'Lister B6 derefter C6, så B7,C7,B8,C8 osv.
Dim i, j
Dim join(500)
Application.ScreenUpdating = False
[b6].Activate
For i = 1 To 500 Step 2
  join(i) = ActiveCell.Value
    join(i + 1) = ActiveCell.Offset(0, 1).Value
  ActiveCell.Offset(1, 0).Activate
Next

[a6].Activate
For j = 1 To 500
  If join(j) = "" Then GoTo om
    ActiveCell.Value = join(j)
  ActiveCell.Offset(1, 0).Activate
om:
Next
Application.ScreenUpdating = True
[a1].Activate
End Sub
Avatar billede Slettet bruger
23. marts 2006 - 07:35 #5
For at få indholdet i eks B3 og C3 sat sammen i A3 skriver du i A3
=SAMMENKÆDNING(B3;C3)

Fra menuen kan du vælge "Indsæt / Funktion" derefter finder du sammenkædning
(Concatinate vis det er en Engelsk version)
Avatar billede mrjh Novice
23. marts 2006 - 11:24 #6
Indsættes i A6, tryk ctrl+shift+enter og kopier ned.
=HVIS(TÆLV(A$5:A5)>=TÆLV($B$6:$C$200);"";HVIS(TÆLV(A$5:A5)>=TÆLV($B$6:$B$200);INDIREKTE("c"&MINDSTE(HVIS($C$6:$C$200<>"";RÆKKE($C$6:$C$200));RÆKKE(A1)-TÆLV($B$6:$B$200)));INDIREKTE("b"&MINDSTE(HVIS($B$6:$B$200<>"";RÆKKE($B$6:$B$200));RÆKKE()-RÆKKE($A$5)))))
Avatar billede ceacer Praktikant
23. marts 2006 - 12:04 #7
Jeg tror mrjh har fat i noget af det rigtige. Har dog ikke tid pt til at tjekke. Det er ikke navne som skal sættes sammen. Det kan fx være at kolonne B indeholder: Peter, Jens, "BLANK", HANS og C indeholder Kurt, "BLANK", Emil. Jeg vil derfor gerne have dem sat sammen i én kolonne uden blanke celler, så den hedder: PETER, JENS, HANS, KURT og EMIL - rækkefølgen ændres senere. Jeg havde før en formel der satte én kolonne sammen uden blanke og den ligner mrjh's forslag, men kigger lige på det senere.
Avatar billede mrjh Novice
23. marts 2006 - 12:42 #8
Det skal lige nævnes at celle A5 skal være tom, hvis ikke (hvis der f.eks er en overskrift i A5), skal de to forekomster af >= ændres til >
Avatar billede ceacer Praktikant
23. marts 2006 - 17:00 #9
Jeg kan ikke rigtig få den til at virke. Kolonne A skal også først starte i række 6. Jeg ved ikke om det har nogen betydning?
Avatar billede ceacer Praktikant
23. marts 2006 - 17:07 #10
Det ser også ud til at excelent har fat i noget af det rigtige, men jeg har intet kendskab til VBA så jeg skal lige bruge en guide i hvordan jeg kan prøve formlen af. Jeg kan lige finde ud af at komme ind i VBA og der stopper det. ;)
Avatar billede mrjh Novice
23. marts 2006 - 17:10 #11
Virker fint hos mig. Har du husket at trykke ctrl+shift+enter inde i formlen
Avatar billede ceacer Praktikant
23. marts 2006 - 17:26 #12
hehe det hjalp en smule, men det er kun kolonne B som kommer over. Ved de andre står der #NUM!, så jeg må have lavet en fejl et sted.
Avatar billede ceacer Praktikant
23. marts 2006 - 17:28 #13
har forresten lige sendt dig en mail med mit gamle problem...
Avatar billede excelent Ekspert
23. marts 2006 - 18:02 #14
du skal blot lægge koden indi et modul

Tryk ALT+F11
Vælg module i Insert menuen
pate koden i  kodevindue
gå til ark
vælg kør makro, eller tildel en genvejstast
Avatar billede excelent Ekspert
23. marts 2006 - 18:05 #15
Paste koden i kodevindue *
Avatar billede ceacer Praktikant
23. marts 2006 - 18:31 #16
Det virker excelent. Men jeg forstår ikke helt din sidste kommentar? Jeg vil gerne have sådan at hvis der automatisk kommer et nyt navn i kolonne B eller C så føres det over til A. Det gør det ikke nu. Skal jeg gemme VBA på nogen bestemt måde?
Avatar billede excelent Ekspert
23. marts 2006 - 18:34 #17
jeg skrev blot Paste som pate
Avatar billede excelent Ekspert
23. marts 2006 - 18:35 #18
du skal blot lade koden blive og den gemmes sammen med projektmappen
og så køre koden igen efter behov
Avatar billede ceacer Praktikant
23. marts 2006 - 18:37 #19
Du har også i et af de gamle indlæg beskrevet følgende formler:
=CELLE("indhold";INDIREKTE(ADRESSE(SAMMENLIGN(H1;F1:F100;0)-1;6)))
=CELLE("indhold";INDIREKTE(ADRESSE(SAMMENLIGN(H1;F1:F100;0)+1;6)))

Jeg kan ikke helt få det til at virke når F er i et andet ark, så den fx hedder =CELLE("indhold";INDIREKTE(ADRESSE(SAMMENLIGN(A13;engagement!F7:F300;0)+1;6)))
kan du se hvad der er galt? I A13 står der 2004 og det gør der også i række 14 under engagement hvor der så står tal ovenoven og nedenunder...
Avatar billede excelent Ekspert
23. marts 2006 - 18:37 #20
skal navnene sorteres stigende, og kolonne B og C slettes
kan du anvende denne kode :

Sub join()
'Lister B6 derefter C6, så B7,C7,B8,C8 osv.
Dim i, j
Dim join(500)
Application.ScreenUpdating = False
[b6].Activate
For i = 1 To 500 Step 2
  join(i) = ActiveCell.Value
    join(i + 1) = ActiveCell.Offset(0, 1).Value
  ActiveCell.Offset(1, 0).Activate
Next

[a6].Activate
For j = 1 To 500
  If join(j) = "" Then GoTo om
    ActiveCell.Value = join(j)
  ActiveCell.Offset(1, 0).Activate
om:
Next
Range("B6:C200").Select
Selection.ClearContents
    Range("A6:A200").Select
    Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

Application.ScreenUpdating = True
[a1].Activate
End Sub
Avatar billede ceacer Praktikant
23. marts 2006 - 18:38 #21
man kan ikke få den til at køre automatisk? man skal hver gang ind og trykke afspil?
Avatar billede excelent Ekspert
23. marts 2006 - 18:39 #22
du kan tilknytte en genvejs tast sådan..:
Avatar billede excelent Ekspert
23. marts 2006 - 18:42 #23
klik menuen Funktioner/Makro/Makroer
Marker join
Klik Indstillinger
Tast et bogstav i ruden til højre for "CTRL+"  fx. m
Avatar billede excelent Ekspert
23. marts 2006 - 18:43 #24
kommentar 18:37:13  var det spørgsmål til mig ?
Avatar billede excelent Ekspert
23. marts 2006 - 19:15 #25
Havde ikke lige forstået at der kunne tilkomme nye navne, så her er en tilrettet
makro til det.

Sub joinABC()
'Lister B6+C6 i A6 osv.
Dim i, j
Dim join(600)
Application.ScreenUpdating = False
[A6].Activate
For i = 1 To 400 Step 3
    join(i) = ActiveCell.Value
    join(i + 1) = ActiveCell.Offset(0, 1)
    join(i + 2) = ActiveCell.Offset(0, 2)
  ActiveCell.Offset(1, 0).Activate
Next
Range("A6:C200").Select
Selection.ClearContents

[A6].Activate
For j = 1 To 400
  If join(j) = "" Then GoTo om2
    ActiveCell.Value = join(j)
  ActiveCell.Offset(1, 0).Activate
om2:
Next

    Range("A6:A200").Select
    Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

[a1].Activate
Application.ScreenUpdating = True
End Sub
Avatar billede excelent Ekspert
23. marts 2006 - 19:19 #26
hvis navne i kolonne B og C ikke skal slettes, skal disse 2 linier slettes

Range("A6:C200").Select
Selection.ClearContents
Avatar billede ceacer Praktikant
24. marts 2006 - 00:04 #27
Første gang jeg indtaster formlen virker den, men indtaster jeg et nyt navn i Kolonne B eller C sker der intet. Trykker jeg så afspil makro bliver alle de gamle navne talt med to gange og det nye én gang. Hvad gør jeg galt?

Ja det andet spørgsmål var også til dig. Det var et svar til mig i en gammel tråd. Kan ikke forstå hvorfor jeg ikke kan få formlen til at virke.

ps svarer nok først tirsdag da jeg skal til London.
Avatar billede excelent Ekspert
24. marts 2006 - 05:16 #28
klik dette link, vælg gem, vælg med makro

http://pmexcelent.dk/join.xls

Prøv demo, og lad mig vide hvilken du foretrækker 1,2 eller 3

vedrørende gammel spørgsmål, så har jeg løsning på det, men det ser vi på bagefter.
Avatar billede mrjh Novice
24. marts 2006 - 12:13 #29
Denne sub klarer det også:

Sub sammenlign()
Dim a As Integer, b As Integer, c As Long
Range("a:a").ClearContents
Range("b6:b200").Select
b = 6
For a = 1 To 200 Step 1
    If ActiveCell.Value <> "" Then
        Cells(b, 1).Value = ActiveCell.Value
        ActiveCell.Offset(1, 0).Activate
        b = b + 1
        Else
        ActiveCell.Offset(1, 0).Activate
    End If
Next

Range("a6:a200").End(xlUp).Select
ActiveCell.Rows = b
Range("c6:c200").Select

For a = 1 To 200 Step 1
    If ActiveCell.Value <> "" Then
        Cells(b, 1).Value = ActiveCell.Value
        ActiveCell.Offset(1, 0).Activate
        b = b + 1
        Else
        ActiveCell.Offset(1, 0).Activate
    End If
Next

[a1].ClearContents
[a6].Activate

End Sub


Ja den er sikkert ikke ligeså elegant som excelents løsning, da det er min første makro jeg nogensinde har lavet fra bunden af (hurraaa)
Men den virker knagme :-)
Avatar billede excelent Ekspert
24. marts 2006 - 15:02 #30
Den ser nu fin ud her fra mrjh.-well done :-) (os amatører skal jo starte et sted)
Avatar billede mrjh Novice
24. marts 2006 - 15:27 #31
Jo tak excelent. Ja det er sgu rart når noget lykkes, så jeg hoppede rundt som en fjeder da den gjorde det som jeg bad om. Men guru bliver jeg nok aldrig på dette felt. Jeg roder stadig rundt i det med objecter, proterties og methods. Men hva...mindre kan vel også gøre det, når bare man har det sjovt :-)
Jeg kan se du sætter 600 direkte ind i den variabel join. Hvad er det lige det betyder og hvorfor sætter du screen.updating til og fra ? (sætter da gerne lidt P. på højkant for at udvide min horisont lidt)
Avatar billede excelent Ekspert
24. marts 2006 - 15:44 #32
Dim join(600) er for at join variablen kan indeholde værdierne i A6:A200 + vædierne i B6:B200 + C6:C200 = knap 600 værdier ialt

Application.ScreenUpdating = False : sætter skærmopdatering ud af drift
Application.ScreenUpdating = True : sætter skærmopdateringen til igen

når du kører din makro, flimrer skærmen en smule - det kan ovenstående forhindre

ja det kom jo bag på mig, at der kunne komme nye navne til, så den skulle
jo omskrives lidt for at tage højde for det, så det gik vist lidt hurtigt
men den virker dog efter hensigten, (altså den i linket).
Iøvrigt virker din formel udmærket, men jeg fik problemer da jeg ville sortere navnene bagefter. ved ikke om spørgeren også skal det.!
Avatar billede mrjh Novice
24. marts 2006 - 16:08 #33
Nej du siger noget. Den kan ikke sortere, men liner dem bare op i indtastnings- rækkefølge. Jamen så er der jo lidt at arbejde med.
Jeg vidste ikke at man kunne bruge GOTO i VBA. Det er jo ligesom i gamle dage i procedure orienteret kode på en ZX spectrum :-). Tak for hints'ene
Avatar billede excelent Ekspert
24. marts 2006 - 16:12 #34
lo ja eller verdens mest avancerede brødkasse C64.. det var tider

LOAD"$",8,1
LIST
READY

jow jow
Avatar billede mrjh Novice
24. marts 2006 - 16:25 #35
*GH*
Avatar billede ceacer Praktikant
28. marts 2006 - 15:39 #36
Att: excelent
Har jeg mulighed for at maile til dig? Jeg kunne måske godt tænke mig version 4 hvis det kan lade sig gøre. Der skal så bare henvises til andre ark i stedet for. Det vil måske kunne spare mig for en del.
Havde du en løsning til det andet spørgsmål?
Avatar billede excelent Ekspert
28. marts 2006 - 17:57 #37
ok

pm@madsen.tdcadsl.dk
Avatar billede excelent Ekspert
28. marts 2006 - 18:04 #38
gl. spørgsmål - ja men det er en VBA-løsning
Avatar billede excelent Ekspert
28. marts 2006 - 21:02 #39
Sub join()
'Fra Aktier!C6:C? og Udl Aktier!C6:C? til Afkast på aktier!A6:A?, sorteret og uden dubletter
Dim i, j
Dim join(400)
Dim cRow, aRow
cRow = 100: aRow = 200
'cRow er antal rækker som undersøges i Aktier og Udl Aktier, aRow er antal rækker i Afkast på aktier.
'kan evt sættes lavere, for at speede farten op, når der skal sorteres for dubletter husk aRow det dobbelte af cRow
Application.ScreenUpdating = False

Worksheets("Aktier").Activate
Range("C6").Select
For i = 1 To cRow
  join(i) = ActiveCell.Value
  ActiveCell.Offset(1, 0).Activate
Next

Worksheets("Udl Aktier").Activate
Range("C6").Activate
For i = cRow To aRow
  join(i) = ActiveCell.Value
  ActiveCell.Offset(1, 0).Activate
Next

Worksheets("Afkast på aktier").Activate
Range("A6:A250").Select
Selection.ClearContents

[A6].Activate
For j = 1 To aRow
  If join(j) = "" Then GoTo om2
    ActiveCell.Value = join(j)
  ActiveCell.Offset(1, 0).Activate
om2:
Next

Range("A6:A" & aRow & "").Select
For i = 1 To aRow
  If Cells(i, 1) <> "" Then
  For j = i + 1 To aRow
    If Cells(i, 1) = Cells(j, 1) Then
    Cells(i, 1).ClearContents
  i = i - 1
  End If
Next
End If
Next

Range("A6:A" & aRow & "").Select
Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

[A6].Select
Application.ScreenUpdating = True
End Sub
Avatar billede excelent Ekspert
28. marts 2006 - 22:07 #40
følgende linie indsættes lige efter: Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

følgende linie indsættes lige før: Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester