Avatar billede jih Nybegynder
09. juli 2008 - 15:32 Der er 2 kommentarer og
1 løsning

Makro til at slette/redigere celler

Hej, jeg har en excel mappe med en masse informationer liggende i, men de ligger alle sammen i en kolonne, sepereret af semikolon.

Det vil jeg fortsat have, men det jeg vil er at lave en makro, som finder 2 af disse celler (som ser sådan ud):
(alle x'er er tal, som jeg ikke kan oplyse)
---
xx;"DSLxxxxxxx";x,xx;33,42;"Koparparsgjald BSA";"xxx"
xx;"DSLxxxxxxx";x,xx;36,58;"Koparparsgjald BSA";"xxx"
---
og samler beløbet (33,42 + 36,58) så det bliver 70,00 og redigerer den ene af de to, sådan som den kommer til at se sådan ud:
---
xx;"DSLxxxxxxx";x,xx;70,00;"Koparparsgjald BSA";"xxx"
---
og hvor den linje som ikke blev redigeret bliver slettet. Og ikke bare slettet ved at fjerne værdien af cellen, men slette rækken, så der ikke er noget mellemrum.

der er dog et par problemer, som gør det lidt sværere:

hvis DSLxxxxxxx tallet er højere end et vist, skal det ikke redigeres (skip) - ved ikke hvad tallet er endnu, men det kunne fx laves som en variabel, jeg kan forandre senere.

hvis der allerede står 70,00 og ikke 33,42 eller noget lignende, skal det ikke redigeres.

Håber nogen kan hjælpe mig med dette, da jeg ikke har nogen anelse over hvor jeg skal starte..

På forhånd tak!

// jih
Avatar billede jih Nybegynder
09. juli 2008 - 16:27 #1
formateringen er blevet forandret, som skulle gøre det meget nemmere:

nu står det hele ikke i en celle, men beløbet (som er det eneste som skal ændres) står i D1,2,3..osv
Avatar billede jih Nybegynder
09. juli 2008 - 16:46 #2
jeg har nu følgende:

    Dim intI As Integer
   
    For intI = 1 To 1300 ' Every Row
        If Not (ActiveSheet.Cells.Range("D" & intI) = 70) Then
            ActiveSheet.Cells.Range("D" & intI) = 70
        End If
    Next intI ' Loop Every Row

så har jeg ikke rigtigt nogen idé om hvordan jeg skal lege rundt med rows.delete funktionen.. er der en nemmere måde?

jeg bruger "ActiveSheet.Cells.Range("A2:F2").Rows.Delete" - men hvordan får jeg den til at slette kun disse:

- én række, når der er 2 ens dsl numre
- ingen række når beløbet allerede er 70 (kun ét dsl nummer)
Avatar billede jih Nybegynder
09. juli 2008 - 17:15 #3
fandt ud af det.. løsningen var som følge:

    Dim intI As Integer
   
    For intI = 1 To 1300 ' Every Row
        With ActiveSheet.Cells
            If (.Range("B" & intI) = .Range("B" & (intI + 1))) Then
                .Range("D" & intI) = 70
                .Range("A" & (intI + 1) & ":F" & (intI + 1)).Rows.Delete
            End If
        End With
    Next intI ' Loop Every Row
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