Avatar billede daki Juniormester
20. februar 2006 - 11:29 Der er 14 kommentarer og
1 løsning

Sammenligne beløb

Skulle denne formel ikke sammenligne kolonne G med kolonne I.
Sætte farve i celle I til Rød såfremt celle G er større og Blå såfremt celle I er 10% eller mere større end celle G og sort såfremt ingen af ovenstående passer.

Range("G2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
For Each C In Selection.Cells
  If C > C.Offset(0, 2) Then
      C.Offset(0, 2).Font.ColorIndex = 3
  ElseIf C + (C / 10) < C.Offset(0, 2) Then
      C.Offset(0, 2).Font.ColorIndex = 5
  Else
      C.Offset(0, 2).Font.ColorIndex = 0
  End If
Next
Range("A1").Select
Avatar billede bak Forsker
20. februar 2006 - 11:42 #1
prøv lige at pille denne linie ud
Range(Selection, Selection.End(xlToRight)).Select
Avatar billede daki Juniormester
20. februar 2006 - 11:54 #2
Har prøvet.
Problemet er, at i visse tilfælde hvor de 2 celler er ens markeres celle I med farven Rød.
Avatar billede kabbak Professor
20. februar 2006 - 12:15 #3
Dim C As Range
Range("G2").Select
Range(Selection, Selection.End(xlDown)).Select
For Each C In Selection.Cells
  If C.Value > C.Offset(0, 2).Value Then
      C.Offset(0, 2).Font.ColorIndex = 3
  ElseIf (C.Value + (C.Value / 10)) < C.Offset(0, 2).Value Then
      C.Offset(0, 2).Font.ColorIndex = 5
  Else
      C.Offset(0, 2).Font.ColorIndex = 0
  End If
Next
Range("A1").Select
Avatar billede bak Forsker
20. februar 2006 - 12:28 #4
Jeg får den ikke til at lave fejl, men jeg har også brugt heltal.
Bruger du decimal tal og er de afrundede. Husk at excel vil lave sammenligningen helt ud på 15'ende ciffer
Avatar billede bak Forsker
20. februar 2006 - 12:33 #5
Hvad jeg forsøgte at skrive var at selvom cellerne er formateret som kr med to decimaler så bliver sammenligningen foretaget på alle decimaler dvs at 12,245 formateret til Kr 12,25 stadig ved sammenligning er 12,245 og du derfor måske ikke direkte kan se en forskel (kun på formellinien)
Avatar billede daki Juniormester
20. februar 2006 - 12:40 #6
Ja, jeg bruger decimal.
Celle I kommer fra en *.txt (beløb incl. moms)
Celle G kommer fra en formel, eks. =HVIS(F88=1;E88;(E88*1,25)) - celle F og E kommer også fra en *.txt. (beløb excl./incl. moms), hvis celle E indeholder '1' er beløb i celle F incl. moms.
Avatar billede daki Juniormester
20. februar 2006 - 12:42 #7
Og det er vist celle F som indeholder '1' og celle E med beløb. :-)
Avatar billede bak Forsker
20. februar 2006 - 13:12 #8
ok, hvis nu E88 = kr 12,25 og F<>1 så bliver G88 = 15,3125. Hvis G88 er formateret som kr vil g88 vise kr 15,31. Hvis så I88 er kr 15,31, kunne man forvente at de var ens og skulle være sorte, men da G88 i virkeligheden er større (15,3125) vil den blive rød.
Avatar billede bak Forsker
20. februar 2006 - 13:13 #9
Altså fjern formatering fra begge kolonner og se om tallene virkelig er ens.
Avatar billede daki Juniormester
20. februar 2006 - 13:48 #10
I eks. er E88=19,96 F88=blank G88=(19,96*1,25)=24,95 I88=24,95 altså burde farven være sort, men den er rød.

Her er hele macro:
Columns("G:G").Select
Selection.ClearContents
Selection.Delete Shift:=xlToLeft
Range("A2").Select
With Selection.QueryTable
    .Connection = "TEXT;C:\Dokumenter\VAMU\vamu.txt"
    .TextFilePlatform = 1252
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1)
    .TextFileDecimalSeparator = "."
    .TextFileThousandsSeparator = "'"
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
End With
Columns("G:G").Select
Selection.Insert Shift:=xlToRight
Selection.NumberFormat = "#,##0.00"
Range("G1").Select
ActiveCell.FormulaR1C1 = "Gl. ud.pris"
Range("G2").Select
Do
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=1,RC[-2],(RC[-2]*1.25))"
ActiveCell.Offset(1, 0).Activate
Loop Until IsEmpty(ActiveCell.Offset(0, 1).Value)
Range("A1").Select
Selection.RowHeight = 30
Selection.ColumnWidth = 6
Range("B1:D1").Select
Selection.ColumnWidth = 8
Range("C1").Select
Selection.ColumnWidth = 30
Range("G1:I1").Select
Selection.ColumnWidth = 8
Dim C As Range
Range("G2").Select
Range(Selection, Selection.End(xlDown)).Select
For Each C In Selection.Cells
  If C.Value > C.Offset(0, 2).Value Then
      C.Offset(0, 2).Font.ColorIndex = 3
  ElseIf (C.Value + (C.Value / 10)) <= C.Offset(0, 2).Value Then
      C.Offset(0, 2).Font.ColorIndex = 5
  Else
      C.Offset(0, 2).Font.ColorIndex = 0
  End If
Next
Range("A1").Select
Avatar billede daki Juniormester
22. februar 2006 - 14:05 #11
I dag er der ingen fejl, mærkeligt :-)
kabbak -> hvad er forskellen på den VBA-stump du laver i forhold til den som jeg viser ?

Vil I have points ?
Avatar billede kabbak Professor
22. februar 2006 - 14:40 #12
det er bare en optimering af din og så bruger jeg .Value, for at fortælle at det er værdien, jeg vil have, om det gør nogen forskel, ved jeg ikke rigtig, men det er nemmere at overskue, hvad man vil.
C har jo også  c.Text, så det er bare derfor
Avatar billede daki Juniormester
22. februar 2006 - 14:54 #13
OK. Det var jeg ikke klar over.
Avatar billede daki Juniormester
08. april 2006 - 14:40 #14
Lukker, vil I have points
Avatar billede daki Juniormester
16. april 2006 - 15:30 #15
Tager selv points, da ingen svar :-)
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