Avatar billede ta2003 Nybegynder
02. november 2003 - 21:54 Der er 18 kommentarer og
1 løsning

Sammmenrykning af celler

Hvis man har 10x10 celler og sletter 2 midt i, kan man så rykke de tilbageblevne sammen, sådan at de 2 tomme felter ikke længere er der.
Avatar billede mlhave Nybegynder
02. november 2003 - 22:01 #1
Kan du præcisere det lidt, hvis man har 10x10 celler og fjerne 2 i midten...
lige i midten? så vil en sammenrykning jo betyde at du har fx en kolonne med 10 celler to med 8 celler og 7 med 10 celler, er det det du forestiller dig?
Eller er det kolonnerne du vil slette for hvis du gør de ved at højreklikker på kolonnens titel fx D og vælger slet, så rykker de andre kolonner sammen automatisk...
Avatar billede m_skau Nybegynder
02. november 2003 - 22:04 #2
Sletter du celler:
Marker de celler du vil fjerne, højreklik på markeringen og svar på dialogboksen, hvordan du vil flytte de andre celler.
Sletter du rækker eller kolonner:´
Marker de rækker, eller de kolonner du vil slette, ved at klikke på kolonne eller række etiketten (f.eks. c eller 3) og trække markøren for at medtage flere rækker eller kolonner. Højreklik derefter på markeringen og vælg "slet"
Avatar billede ta2003 Nybegynder
02. november 2003 - 22:09 #3
Til mlhave:
Nej forestil dig at du skriver tallene fra 1 - 100 i de 10 x 10 celler.
så skal tallet 7 slettes
kan man så rykke de 10 x 10 celler således at det tomme felt (hvor tallet 7 stod) kommer til at stå i celle nr. 100??
Avatar billede mlhave Nybegynder
02. november 2003 - 22:19 #4
ja, det kan man godt :o)
Det kræver bare en der kan lave det i VBA - så her må jeg stå af, jeg er langt fra verdensmester i det, men hvis ingen andre svare i løbet af et par dage skal jeg nok kaste mig over det :o)
Avatar billede kabbak Professor
02. november 2003 - 22:46 #5
hvis du har dataerne i  Celle A1 Til J10, så virker den her.

Public Sub FlytTomt()
Sheets("Ark1").Select
Dim Rng As Variant
On Error GoTo Slut
Rng = Range("a1:J10")
For r = 1 To 10
For K = 1 To 10
If Rng(r, K) = "" Then
If K + 1 < 11 Then
Rng(r, K) = Rng(r, K + 1)
Rng(r, K + 1) = ""
Else
Rng(r, K) = Rng(r + 1, 1)
Rng(r + 1, 1) = ""
End If
End If
Next
Next
Slut:
Range("a1:J10") = Rng
End Sub
Avatar billede ta2003 Nybegynder
02. november 2003 - 22:59 #6
Til kabbak
Ja ok, men så er der endnu et problem. Det med de 10 x 10 celler var kun et eksempel, i virkligheden kan det være i mange forskellige størelser det antal celler jeg skal bruge, både i længde og bredde
Avatar billede kabbak Professor
02. november 2003 - 23:18 #7
Her skal du makere området, inden du kører makroen, til gengæld virker den overalt.

Public Sub FlytTomt()
Dim Rng As Variant
On Error GoTo Slut
Rng = Selection
A = UBound(Rng)
C = Selection.Columns.Count
For r = 1 To A
For K = 1 To C
If Rng(r, K) = "" Then
If K + 1 < C + 1 Then
Rng(r, K) = Rng(r, K + 1)
Rng(r, K + 1) = ""
Else
Rng(r, K) = Rng(r + 1, 1)
Rng(r + 1, 1) = ""
End If
End If
Next
Next
Slut:
Selection = Rng
End Sub
Avatar billede kabbak Professor
02. november 2003 - 23:20 #8
NB. du må ikke bruge 'Skæve' makeringer, kun rektangler eller kvardradiske.
Avatar billede ta2003 Nybegynder
03. november 2003 - 00:32 #9
Til kabbak
Skal det på forhånd vides hvor stor område der skal bruges, kan det sgu nok ikke bruges
Avatar billede ta2003 Nybegynder
03. november 2003 - 00:55 #10
Jeg bruger regneark til at lave "manco lister"
Jeg har gjordt cellerne smallere så der kan være flere (det skal passe til udskriften)
Jeg skriver så tal i alle cellerne fra venstre top og nedad i et X antal linier. Og med tiden bliver der så slettet et tal "celle" hist og pist.
Så kommer det, det hele drejer sig om, nemlig sammen rygningen af det således at de celler der var tomme forsvinder og listen dermed bliver kotere
Avatar billede kabbak Professor
03. november 2003 - 08:47 #11
Hvis jeg har forstået det korrekt, er det hver kolonne der skal forminskes.
Ved denne skal du klikke ind i området, så finder den selv afgrænsningen.
Den flytter op til 10 tomme i hver kolonne, hvis du har mere så kør den igen.


Public Sub FlytTomt()
Dim Rng As Variant
ActiveCell.CurrentRegion.Select
'On Error GoTo Slut
Rng = Selection
A = UBound(Rng)
C = Selection.Columns.Count
For I = 1 To 10
For r = 1 To A - 1
For k = 1 To C
If Rng(r, k) = "" Then
Rng(r, k) = Rng(r + 1, k)
Rng(r + 1, k) = ""
End If
Next
Next
Next
Slut:
Selection = Rng
End Sub
Avatar billede ta2003 Nybegynder
07. november 2003 - 19:28 #12
Jeg prøver at lave et eksempel.

Dette er "manco listen"

1  2  3  4  5  6
7  8  9  10  11  12
13  14  15  16  17  18
19  20  21  22  23  24
25  26  27  28  29  30

Og så vidre, i virklig heder er der MÅSKE 15 vanret og 40-50 lodret. Men på eksemplet skal vi nu ha slettet nr. 8 og nr. 22 siger vi.
Så ser "manco listen" sådan ud:
1  2  3  4  5  6
7      9  10  11  12
13  14  15  16  17  18
19  20  21      23  24
25  26  27  28  29  30

Og udskriften ser selfølgelig også sådan ud.

Kunne man så ikke ved brug af regneark rykke sammen på cellerne så "manco listen" kommer til at se sådan her ud ??

1  2  3  4  5  6
7  9  10  11  12  13
14  15  16  17  18  19 
20  21  23  24  25  26
27  28  29  30

Husk det er kun et eksempel, i virkligheden kan "manco listen" være i mange forskællige støgelser !!
Avatar billede ta2003 Nybegynder
07. november 2003 - 19:39 #13
01  02  03  04  05  06
07  08  09  10  11  12
13  14  15  16  17  18
19  20  21  22  23  24
25  26  27  28  29  30


01  02  03  04  05  06
07  ..  09  10  11  12
13  14  15  16  17  18
19  20  21  ..  23  24
25  26  27  28  29  30

01  02  03  04  05  06
07  09  10  11  12  13
14  15  16  17  18  19
20  21  23  24  25  26
27  28  29  30
Avatar billede kabbak Professor
07. november 2003 - 20:15 #14
Skulle være der nu, prøv at teste.

Public Sub FlytTomt()
Dim Rng As Variant
ActiveCell.CurrentRegion.Select
Rng = Selection
A = UBound(Rng)
C = Selection.Columns.Count
For I = 1 To 10
For R = 1 To A
For K = 1 To C
If Rng(R, K) = "" Then
If K + 1 < C + 1 Then
Rng(R, K) = Rng(R, K + 1)
Rng(R, K + 1) = ""
Else
If R + 1 <= A Then
Rng(R, K) = Rng(R + 1, 1)
Rng(R + 1, 1) = ""
End If
End If
End If
Next
Next
Next
Selection = Rng
End Sub
Avatar billede ta2003 Nybegynder
07. november 2003 - 20:26 #15
Til kabbak
Jeg er ikke super bruger af pc, så måske et dumt spørgsmål: Hvor skal jeg skrive formlen henne ??
Avatar billede kabbak Professor
07. november 2003 - 20:38 #16
Når du står i regnearket , tryk ALT +F11, så kommer du til kodemodulet i VBA.
Vælg insert  og  module.

i det modul indsætter du koden.

lok kodemodulet ved at trykke på øverste x i højre hjørne, så er du tilbage på arket.

Klik ind i en celle i det område som skal sammenrykkes.

vælg funktioner makro makroer, her kan du se den, vælg afspil.
Avatar billede kabbak Professor
07. november 2003 - 20:40 #17
nb. den tager alle celler, der er inden for et område, der er omkranset af tomme celler.
Avatar billede ta2003 Nybegynder
07. november 2003 - 21:19 #18
Til kabbak
Jeg har prøvet din formel, gjorde som du sagde jeg skulle i en tilfældigt "manco liste" og puff den gjorde som den skulle, så svar er accepteret, mange tak, du er sgu sendig :-)
MVH TA2003
Avatar billede kabbak Professor
07. november 2003 - 21:21 #19
tak for point
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