22. juli 2024 - 10:58Der er
7 kommentarer og 1 løsning
Betinget formatering
Hej Eksperter, håber ikke alle er på ferie. Er det muligt at fremhæve de sidste 4 cifre med fed skrift, ud af 8 cifre med betinget formatering? Første ciffer af de 4 sidste cifre kan nogle gange være et nul.
Jeg prøvede at stille spørgsmålet på ChatGPT, som jeg flere gange har brugt til lidt mere komplicerede Excel- og Access-ting. For det meste har det været brugbart. Én gang lykkedes det ikke at få et brugbart svar. Så jeg ved ikke om nedenstående svar kan bruges. Den angiver engelske funktionsnavne, som jeg i den første del (ikke-VBA) har oversat til dansk. Og den siger komma, som jeg i formlerne har udskiftet med semikolon. VBA-delen er blot uredigeret copy/paste.
ChatGPT:
Ja, det er muligt at fremhæve de sidste 4 cifre med fed skrift ved hjælp af betinget formatering i Excel. Desværre understøtter betinget formatering i Excel ikke direkte at ændre skriftstilen for en del af cellens indhold. Vi kan dog opnå dette ved at anvende en kombination af celler og betinget formatering. Her er en metode til at gøre det:
Adskil de sidste 4 cifre fra de første 4 cifre: Hvis dine 8-cifrede tal er i kolonne A, skal du bruge kolonne B til de første 4 cifre og kolonne C til de sidste 4 cifre. I celle B1 skriver du følgende formel for at få de første 4 cifre:
=VENSTRE(A1;4)
I celle C1 skriver du følgende formel for at få de sidste 4 cifre:
=HØJRE(A1;4)
Anvend betinget formatering til de sidste 4 cifre:
Vælg kolonne C. Gå til fanen "Betinget formatering" i Excel. Vælg "Ny regel". Vælg "Brug en formel til at bestemme, hvilke celler der skal formateres". Indtast følgende formel:
=LÆNGDE(C1)=4
Klik på "Formatér" knappen. Gå til fanen "Skrifttype" og vælg fed skrift. Klik på OK og derefter OK igen for at anvende formateringen.
Kombinér de formaterede celler i én celle: Du kan kombinere de formaterede celler til visning ved hjælp af en tekstfunktion, men det vil ikke bevare formateringen. Alternativt kan du lade dem være i separate celler for at bevare formateringen.
Nu vil de sidste 4 cifre i kolonne C være formateret med fed skrift, mens de første 4 cifre i kolonne B forbliver uformateret. Hvis det er vigtigt at have alle 8 cifre i samme celle med de sidste 4 cifre fremhævet, vil det kræve en VBA-løsning, da det ikke kan opnås med standard betinget formatering. - - - - Mit spørgsmål: Hvad er VBA-løsningen, så de 8 tal står i samme celle med de sidste 4 cifre med fed skrift?
ChatGPT: For at fremhæve de sidste 4 cifre med fed skrift i samme celle ved hjælp af VBA, kan du bruge følgende VBA-kode. Denne kode vil automatisk formatere de sidste 4 cifre af et 8-cifret tal i en celle til fed skrift.
Følg disse trin:
Åbn Excel og tryk Alt + F11 for at åbne VBA-editoren. I VBA-editoren, vælg Indsæt > Modul for at oprette en ny modul. Kopier og indsæt følgende kode i modulet:
Sub FormatLastFourDigits() Dim rng As Range Dim cell As Range
' Set the range you want to format Set rng = Selection
For Each cell In rng If IsNumeric(cell.Value) And Len(cell.Value) = 8 Then ' Clear any existing formatting cell.Font.Bold = False
' Format the last 4 digits as bold With cell.Characters(Start:=5, Length:=4).Font .Bold = True End With End If Next cell End Sub
Luk VBA-editoren ved at klikke på X eller tryk Alt + Q. Vælg de celler i Excel, som du vil formatere (sørg for, at de kun indeholder 8-cifrede tal). Tryk Alt + F8 for at åbne dialogboksen Makro. Vælg FormatLastFourDigits og klik på Kør.
Denne VBA-makro vil formatere de sidste 4 cifre af de valgte celler til fed skrift.
Hvis du ønsker, at denne makro skal køres automatisk, når der indtastes nye data i en celle, kan du tilføje en Worksheet_Change hændelse. Følg disse trin:
Åbn VBA-editoren igen (Alt + F11). Dobbeltklik på det relevante ark (f.eks. Sheet1) i Projekt-vinduet. Kopier og indsæt følgende kode i arket:
Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range
' Check if the changed cells are in the desired range For Each cell In Target If IsNumeric(cell.Value) And Len(cell.Value) = 8 Then ' Clear any existing formatting cell.Font.Bold = False
' Format the last 4 digits as bold With cell.Characters(Start:=5, Length:=4).Font .Bold = True End With End If Next cell End Sub
Luk VBA-editoren (Alt + Q).
Nu vil VBA-makroen automatisk formatere de sidste 4 cifre til fed skrift, hver gang du ændrer en celle i det pågældende ark.
Hej igen Kan ikke få det til at virke, koden vil ikke acceptere min range. Nu er jeg nok ikke den skarpeste kniv i skuffen vedrørende vba, men lidt hjælp til set range ('Sort. liste'!D22:D5000) vil være en hjælp.
Jeg er ikke helt sikker på hvordan du ønsker at det skal fungere, så jeg har lavet to løsningsforslag. Men først lige en kommentar angående formatering af en del af en celles indhold. Hvis det er formateret som et tal, kan man ikke gøre det, men hvis tallet er formateret som tekst er der ikke noget problem. Så start med at formatere hele området som tekst.
Løsningsforslag 1. Her bliver de fire sidste tal først formateret fed, når der tastes nye tal ind:
If Not Intersect(Target, Range("D22:D22")) Is Nothing Then With Target.Characters(Start:=5, Length:=4).Font .FontStyle = "fed" End With End If End Sub
Løsningsforslag 2. Her formateres alle celler, når makroen køres:
Sub fed() For x = 22 To 5000 With Cells(x, 4).Characters(Start:=5, Length:=4).Font .FontStyle = "fed" End With Next End Sub
If Not Intersect(Target, Range("D22:D5000")) Is Nothing Then With Target.Characters(Start:=5, Length:=4).Font .FontStyle = "fed" End With End If End Sub
Hej Jens Løsning 2 virker perfekt, når man lige husker at tekst formatere cellerne :-) 1000 tak for hjælpen
Synes godt om
Ny brugerNybegynder
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.