Avatar billede cvl Nybegynder
21. august 2005 - 12:54 Der er 19 kommentarer og
3 løsninger

opskrive en talrække ud fra hvilke tal der mangler fra 1-9

Hvis man fra b5-j5 har 9 felter hvor der i nogle af felterne er et tal fra 1-9, hvordan kan man så få regnearket til at opskrive de tal fra 1-9 der mangler i rækken og hvert tal må kun fremkomme en gang, tallene (som mangler) skal foreksempel skrives op i celle n5-v5 (hvis der mangler 9 tal skal den foreksempel skrive 1 2 3 4 5 6 7 8 9 (hvert tal i hver sin celle fra n5-v5) kan det lade sig gøre????
Avatar billede sjap Praktikant
22. august 2005 - 00:08 #1
Prøv med denne lille stump kode:

Sub test19()

Mangler = 0
For i = 1 To 9
    Fundet = False
    For Each c In Range("B5:J5")
        If i = c Then
            If Fundet Then
                MsgBox "Dobbeltindtastning (" & i & ")", vbCritical + vbOKOnly, "Fejl"
            Else
                Fundet = True
            End If
        End If
    Next c
    If Not Fundet Then
        Mangler = Mangler + 1
        Cells(5, 13 + Mangler).Value = i
    End If
Next

End Sub
Avatar billede cvl Nybegynder
22. august 2005 - 07:24 #2
Hej sjap
Hvor skal jeg skrive den kode henne ?
Avatar billede sjap Praktikant
22. august 2005 - 16:55 #3
Tryk Alt-F11, vælg menuen Indsæt/Modul og kopier ovenstående kode ind her.

Hereften kan programmet køres, når du i regnearket trykker Alt-F8.

Du kan også oprette en kommandoknap i regnearket, så du kan aktivere funktionen ved tryk på den.
Avatar billede cvl Nybegynder
22. august 2005 - 17:57 #4
Ok tak for det, kan koden ikke udvides til at fortsætte til næste række og gøre det samme, altså i b6:j6 og skrive de der mangler fra n6-v6 ???
Avatar billede sjap Praktikant
22. august 2005 - 18:06 #5
Sub test19()

For j = 5 To 6
    Mangler = 0
    For i = 1 To 9
        Fundet = False
        For Each c In Range("B" & j & ":J" & j)
            If i = c Then
                If Fundet Then
                    MsgBox "Dobbeltindtastning (" & i & ")", vbCritical + vbOKOnly, "Fejl"
                Else
                    Fundet = True
                End If
            End If
        Next c
        If Not Fundet Then
            Mangler = Mangler + 1
            Cells(j, 13 + Mangler).Value = i
        End If
    Next i
Next j

End Sub
Avatar billede cvl Nybegynder
22. august 2005 - 18:28 #6
for nu at være rigtig besværlig kan man så få den til at, hvis man indsætter et tal i rækken b5:j5, kan den så fjerne den fra rækken n5:v5???

Jeg kan ikke rigtig få en kommandoknap til at fungere kan du også hjælpe med det ??
Avatar billede cvl Nybegynder
22. august 2005 - 18:35 #7
og hvad hvis man gerne vil have den til at fungere lodret altså fra b5:b13 og skrive de manglende tal op fra b17:b25 og så fortsætte til den kolonne C??
Avatar billede sjap Praktikant
22. august 2005 - 19:25 #8
Du finder da også hele tiden på noget nyt! Jeg kan godt lave funktionen automatisk - så behøver du ikke knappen. Du skal blot lige ændre funktionen til

Sub test19()

Range("N5:V6").Clear
For j = 5 To 6
    Mangler = 0
    For i = 1 To 9
        Fundet = False
        For Each c In Range("B" & j & ":J" & j)
            If i = c Then
                If Fundet Then
                    MsgBox "Dobbeltindtastning (" & i & ")", vbCritical + vbOKOnly, "Fejl"
                    Cells(j, 13 + Mangler) = "Dobbeltindtastning"
                Else
                    Fundet = True
                End If
            End If
        Next c
        If Not Fundet Then
            Mangler = Mangler + 1
            Cells(j, 13 + Mangler).Value = i
        End If
    Next i
Next j

End Sub


Derefter højreklikker du på fanebladet på regnearket, hvor du skriver dine tal. Vælg "Vis programkode" og i det vindue, der dukker frem skriver du følgende


Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Row = 5 Or Target.Row = 6 Then
    If Target.Column >= 2 And Target.Column <= 10 Then
        test19
    End If
End If

End Sub
Avatar billede cvl Nybegynder
22. august 2005 - 19:44 #9
jeg syntes ikke den virker automatisk, og jeg vil gerne have den til at virke fra b5 og fortsætte til række b13, og hvad med at få den til at fungere lodret? ja ja jeg ved godt men jeg kan jo ikke selv finde ud af det. og jeg ved godt det er meget at forlange men du er jo mesteren.
Avatar billede sjap Praktikant
22. august 2005 - 19:47 #10
Den lodrette var lige smuttet. Det må kunne klares med denne her:

Sub Test19Lodret()

Range("B17:C25").Clear
For j = 2 To 3
    Mangler = 0
    For i = 1 To 9
        Fundet = False
        For Each c In Range(Cells(5, j), Cells(13, j))
            If i = c Then
                If Fundet Then
                    MsgBox "Dobbeltindtastning (" & i & ")", vbCritical + vbOKOnly, "Fejl"
                    Mangler = Mangler + 1
                    Cells(16 + Mangler, j) = "Dobbeltindtastning (" & i & ")"
                Else
                    Fundet = True
                End If
            End If
        Next c
        If Not Fundet Then
            Mangler = Mangler + 1
            Cells(16 + Mangler, j).Value = i
        End If
    Next i
Next j

End Sub
Avatar billede sjap Praktikant
22. august 2005 - 19:48 #11
Nåh, ja så skal automatikken lige ændres til:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Column = 2 Or Target.Column = 3 Then
    If Target.Row >= 5 And Target.Row <= 13 Then
        Test19Lodret
    End If
End If

End Sub
Avatar billede sjap Praktikant
22. august 2005 - 20:01 #12
Hvis du ikke kan få det til at virke, så læg en mail-adresse, så sender jeg mit ark.
Avatar billede cvl Nybegynder
22. august 2005 - 20:18 #13
det ser ud til at automatikken virker i den lodrette men ikke i den vandrette, min e-mail er vinther@larsen.mail.dk
Avatar billede sjap Praktikant
22. august 2005 - 20:32 #14
Regneark sendt.
Avatar billede cvl Nybegynder
22. august 2005 - 20:55 #15
jeg har sendt et regneark til dig hvor du måske kan se hvad jeg gerne vil kunne gøre
Avatar billede cvl Nybegynder
22. august 2005 - 20:56 #16
men hvis du vil svare mig tilbage så svar tilbage på vinther@larsen.mail.dk
Avatar billede sjap Praktikant
22. august 2005 - 21:07 #17
Er det meningen at den skal gøre det for række 1 - 2 og kolonne B - C (som du har beskrevet ovenfor) eller skal det gøres for alle rækker (5 - 13) og alle kolonner (B - J)?
Avatar billede cvl Nybegynder
22. august 2005 - 21:24 #18
for alle rækker og alle kolonner, jeg troede at jeg selv kunne udvide koden hvis det kom til at virke for de to rækker, men nej det kan jeg ikke
Avatar billede sjap Praktikant
22. august 2005 - 21:27 #19
I farten glemte jeg lige at ændret "automaten" - der skal stå sådan her i stedet:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Row >= 5 And Target.Row <= 13 Then
    If Target.Column >= 2 And Target.Column <= 10 Then
        Test19Vandret
        Test19Lodret
    End If
End If

End Sub
Avatar billede sjap Praktikant
22. august 2005 - 21:29 #20
Jeg kan se, der er lidt mere jeg har glemt at rette. Jeg sender lige et nyt ark.
Avatar billede sjap Praktikant
22. august 2005 - 21:37 #21
I virkeligheden er en del af rettelserne ret enkle:

Sub Test19Vandret()
Range("N5:V13").ClearContents
For j = 5 To 13

N5:V13 er det område hvor de manglende tal skrives (her stod tidligere "N5:V6").
Koden gennemløber række for række tallene i række 5 til 13 (her stod tidligere 5 til 6).

Sub Test19Lodret()
Range("B17:J25").ClearContents
For j = 2 To 10

B17:J25 er det område hvor de manglende tal skrives (her stod tidligere "B17:C25").
Koden gennemløber kolonne for kolonne tallene i kolonne 2 (dvs. B) til 10 (dvs. J) (her stod tidligere 2 til 3).

Herudover er der så ændret i "Worksheet_Change" sub'en som beskrevet ovenfor - den er faktisk blevet mere enkel.
Avatar billede cvl Nybegynder
22. august 2005 - 22:16 #22
tusinde tak for hjælpen jeg giver dig hermed dine fortjente points tak tak tak
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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