Flashback bygger pepparkakshus!
2016-12-28, 16:14
  #2173
Medlem
Citat:
Ursprungligen postat av Lo
Känn på den här:

=ÅR(A1)<=ÅR(IDAG())

Du får justera för 5-årsintervallet, men du fattar principen.

HTH


Jag vet hur man kompenserar för dagar men tyvärr inte för år... Jag är inte speciellt duktig på excel men jag förstår själva principen av din formel men när jag skriver in den som den är blir alla mina årtal rödmarkerade även om de är större än > i år vilket jag tycker att de inte borde bli enligt formeln... Det är något jag helt enkelt inte förstår här
Citera
2016-12-28, 18:23
  #2174
Medlem
Citat:
Ursprungligen postat av stassen
Jag vet hur man kompenserar för dagar men tyvärr inte för år... Jag är inte speciellt duktig på excel men jag förstår själva principen av din formel men när jag skriver in den som den är blir alla mina årtal rödmarkerade även om de är större än > i år vilket jag tycker att de inte borde bli enligt formeln... Det är något jag helt enkelt inte förstår här
Den något utökade formeln
=ÅR(A1)<=(ÅR(IDAG())-5)
returnerar SANT för datum före 2012-01-01, annars FALSKT (under 2016). Det är så jag tolkar din fråga.

Innan du lägger in formeln i Villkorsstyrd formatering kan du testa formeln i en kolumn på kalkylbladet bredvid dina datum. Då är det lätt att se att korrekt SANT eller FALSKT returneras.
Citera
2016-12-28, 20:57
  #2175
Medlem
Citat:
Ursprungligen postat av Lo
Den något utökade formeln
=ÅR(A1)<=(ÅR(IDAG())-5)
returnerar SANT för datum före 2012-01-01, annars FALSKT (under 2016). Det är så jag tolkar din fråga.

Innan du lägger in formeln i Villkorsstyrd formatering kan du testa formeln i en kolumn på kalkylbladet bredvid dina datum. Då är det lätt att se att korrekt SANT eller FALSKT returneras.


Tusen tusen TACK!! Nu kommer mitt arbete bli jättefint!
Citera
2016-12-28, 21:35
  #2176
Medlem
Citat:
Ursprungligen postat av stassen
Tusen tusen TACK!! Nu kommer mitt arbete bli jättefint!
Tack för tack
Citera
2016-12-30, 17:45
  #2177
Medlem
526s avatar
Hur få in två värden i samma cell?

Har en lista med namn i kolumn A och ett annat värde i kolumn B
Dvs varje unikt namn har ett värde kopplat till sig.
MEN samma namn förekommer fler gånger i samma lista, men med andra värden.
Nu vill jag få in samtliga värden för varje namn i samma kolumn.
Hur göra det? Går det med någon magisk LETARAD formel?

NU:
K1___K2
Nisse Värde X
Nisse Värde Y

ÖNSKAT:
K1___K2
Nisse Värde X, Värde Y
__________________
Senast redigerad av 526 2016-12-30 kl. 17:50.
Citera
2016-12-30, 18:58
  #2178
Medlem
Citat:
Ursprungligen postat av 526
Hur få in två värden i samma cell?

Har en lista med namn i kolumn A och ett annat värde i kolumn B
Dvs varje unikt namn har ett värde kopplat till sig.
MEN samma namn förekommer fler gånger i samma lista, men med andra värden.
Nu vill jag få in samtliga värden för varje namn i samma kolumn.
Hur göra det? Går det med någon magisk LETARAD formel?

NU:
K1___K2
Nisse Värde X
Nisse Värde Y

ÖNSKAT:
K1___K2
Nisse Värde X, Värde Y

Jag vet inget snyggt sätt att göra detta på. Har själv löst det genom att först ta bort alla dubbletter och sedan sortera på K1, K2. Därefter =a1 i c1 och i C2 =om(a1=a2;c1&", "&b2;a2&" &b2). Sedan fyll nedåt i C. Då har du något att utgå ifrån i alla fall.
Citera
2016-12-30, 19:57
  #2179
Medlem
526s avatar
Citat:
Ursprungligen postat av mittåt
Jag vet inget snyggt sätt att göra detta på. Har själv löst det genom att först ta bort alla dubbletter och sedan sortera på K1, K2. Därefter =a1 i c1 och i C2 =om(a1=a2;c1&", "&b2;a2&" &b2). Sedan fyll nedåt i C. Då har du något att utgå ifrån i alla fall.
Tack. Jag förstår dock inte
Om jag först tar bort dubletterna förlorar jag informationen om vilka andra värden samma person har (antar jag)
Sen förstår jag inte den formel du skrev. Den verkar dock bra
Var ska jag klistra in den?
Citera
2016-12-31, 00:20
  #2180
Medlem
nihilverums avatar
Citat:
Ursprungligen postat av 526
Hur få in två värden i samma cell?

Har en lista med namn i kolumn A och ett annat värde i kolumn B
Dvs varje unikt namn har ett värde kopplat till sig.
MEN samma namn förekommer fler gånger i samma lista, men med andra värden.
Nu vill jag få in samtliga värden för varje namn i samma kolumn.
Hur göra det? Går det med någon magisk LETARAD formel?

NU:
K1___K2
Nisse Värde X
Nisse Värde Y

ÖNSKAT:
K1___K2
Nisse Värde X, Värde Y

Nja, LETARAD klarar inte detta tyvärr. Förslaget från mittåt är inte heller tillräckligt generellt för att lösa problemet ifall listan inte är försorterad på namn. Dessutom så leder det till att de celler som innehåller hela listan på värden för respektive namn inte står i en följd rakt efter varandra utan finns på varje rad som är den sista för ett visst givet namn.

Jag föreslår att du börjar med att sortera listan baserat på namn. Sedan kan du göra ett avancerat filter där du kopierar alla unika namn till en separat plats i en tom kolumn. Därefter så får man trixa lite med hjälpfunktioner för att få en hel lista med värden för varje namn. Enklast är egentligen att definiera en lämplig funktion i VBA för att sätta ihop alla värden. Då kan du exempelvis använda följande:

Kod:
Option Explicit

Public Function JoinText(cells As Variant,Optional delim_str As String) As String
    If cells.Columns.count < cells.Rows.count Then
       JoinText = Join(WorksheetFunction.Transpose(cells), delim_str)
    Else
       JoinText = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(cells)), delim_str)
    End If
End Function

Då återstår bara att fixa ett sätt att ta fram rätt uppsättning celler för respektive namn, vilket man kan åstadkomma med lite genomtänkt användning av funktionen PASSA.

Innan jag beskriver hur man gör det vill jag dock först säkerställa att du är OK med tillvägagångssättet ovan med tanke på att det ju innehåller ett flertal steg. Ifall du tycker att det är för rörigt så kanske det inte är så meningsfullt att beskriva resten av detaljerna.
Citera
2016-12-31, 13:29
  #2181
Medlem
526s avatar
Citat:
Ursprungligen postat av nihilverum
Nja, LETARAD klarar inte detta tyvärr. Förslaget från mittåt är inte heller tillräckligt generellt för att lösa problemet ifall listan inte är försorterad på namn. Dessutom så leder det till att de celler som innehåller hela listan på värden för respektive namn inte står i en följd rakt efter varandra utan finns på varje rad som är den sista för ett visst givet namn.

Jag föreslår att du börjar med att sortera listan baserat på namn. Sedan kan du göra ett avancerat filter där du kopierar alla unika namn till en separat plats i en tom kolumn. Därefter så får man trixa lite med hjälpfunktioner för att få en hel lista med värden för varje namn. Enklast är egentligen att definiera en lämplig funktion i VBA för att sätta ihop alla värden. Då kan du exempelvis använda följande:

Kod:
Option Explicit

Public Function JoinText(cells As Variant,Optional delim_str As String) As String
    If cells.Columns.count < cells.Rows.count Then
       JoinText = Join(WorksheetFunction.Transpose(cells), delim_str)
    Else
       JoinText = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(cells)), delim_str)
    End If
End Function

Då återstår bara att fixa ett sätt att ta fram rätt uppsättning celler för respektive namn, vilket man kan åstadkomma med lite genomtänkt användning av funktionen PASSA.

Innan jag beskriver hur man gör det vill jag dock först säkerställa att du är OK med tillvägagångssättet ovan med tanke på att det ju innehåller ett flertal steg. Ifall du tycker att det är för rörigt så kanske det inte är så meningsfullt att beskriva resten av detaljerna.
Ok, verkar lovande.
Vet inte om jag förstår dig rätt, men i nuläget finns det unika värden som är e-postadresser, och de är sorterade med ämnen på varje unikt värde. Det är LETARAD som fixade det.
Är det det du beskriver i det fetmarkerade?
Citera
2016-12-31, 15:42
  #2182
Medlem
nihilverums avatar
Citat:
Ursprungligen postat av 526
Ok, verkar lovande.
Vet inte om jag förstår dig rätt, men i nuläget finns det unika värden som är e-postadresser, och de är sorterade med ämnen på varje unikt värde. Det är LETARAD som fixade det.
Är det det du beskriver i det fetmarkerade?

Som jag tolkade ditt inlägg så har du personnamn i kolumn A och tillhörande mailadresser i kolumn B. Vissa personnamn har flera mailadresser. Är det en korrekt beskrivning av nuläget?
Citera
2016-12-31, 16:31
  #2183
Medlem
526s avatar
Citat:
Ursprungligen postat av nihilverum
Som jag tolkade ditt inlägg så har du personnamn i kolumn A och tillhörande mailadresser i kolumn B. Vissa personnamn har flera mailadresser. Är det en korrekt beskrivning av nuläget?
Aha. Nej mejladressen och namn hänger bra ihop. Det är mejladressen som är listans unika värde.
Men varje mejladress har flera ämnen. Dvs det är dubbletter med personer som har flera ämnen, så de förekommer flera gånger i hela listan.
Dvs det är namn, e-post, ämne

Det jag vill är att få in alla ämnen i samma kolumn och cell men med samma unika mejladress
Tex
Kolumn A: Nils Nilsson
Kolumn B: nils@nilsson.com
Kolumn C: Apelsin

Men det finns en dubblett som är:
Kolumn A: Nils Nilsson
Kolumn B: nils@nilsson.com
Kolumn C: Äpple

Det man vill är att ha alla frukter i samma cell och ta bort dubbletter så personen så den bara finns en gång i listan:
Kolumn A: Nils Nilsson
Kolumn B: nils@nilsson.com
Kolumn C: Apelsin, Äpple

Helst kommaseparerat
__________________
Senast redigerad av 526 2016-12-31 kl. 16:34.
Citera
2017-01-01, 10:18
  #2184
Medlem
nihilverums avatar
Citat:
Ursprungligen postat av 526
Aha. Nej mejladressen och namn hänger bra ihop. Det är mejladressen som är listans unika värde.
Men varje mejladress har flera ämnen. Dvs det är dubbletter med personer som har flera ämnen, så de förekommer flera gånger i hela listan.
Dvs det är namn, e-post, ämne

Det jag vill är att få in alla ämnen i samma kolumn och cell men med samma unika mejladress
Tex
Kolumn A: Nils Nilsson
Kolumn B: nils@nilsson.com
Kolumn C: Apelsin

Men det finns en dubblett som är:
Kolumn A: Nils Nilsson
Kolumn B: nils@nilsson.com
Kolumn C: Äpple

Det man vill är att ha alla frukter i samma cell och ta bort dubbletter så personen så den bara finns en gång i listan:
Kolumn A: Nils Nilsson
Kolumn B: nils@nilsson.com
Kolumn C: Apelsin, Äpple

Helst kommaseparerat

OK, då är det lite tydligare. I så fall så är VBA-funktionen som jag beskrev tidigare fortfarande relevant. För att lösa det hela smidigt så bör listan lämpligtvis vara sorterad på namn och/eller mailadress först.

För att få ut en lista där varje namn/mailadress har en rad så är det sedan lämpligt att använda avancerat filter för att fixa en separat lista i en annan kolumn där varje namn/mailadress har en rad vardera. Titta exempelvis på den här sidan, under rubriken "Filter Unique Records".

När du har en separat lista med bara en rad per namn/mailadress så är det dags att börja använda VBA-funktionen som jag tog med tidigare. Först behöver man då använda funktionen PASSA för att få fram hjälpsiffror som visar var respektive namn/mailadress förekommer för första gången i den ursprungliga större listan).

Ställ dig i en tom cell på samma rad som första raden i den kortare listan som du fick av det avancerade filtret. Skriv in formeln =PASSA(cell;område;0), där du istället för "cell" väljer antingen namnet eller mailadressen som finns på samma rad i den kortare listan och istället för "område" så har du den kolumn i den ursprungliga längre tabellen som innehåller samma (dvs namn eller mailadress, beroende på vad du valde som "cell"). Se till att låsa "område" med F4 så att det blir $-tecken och ta inte med eventuell rubrik i "område" utan bara själva namnen/mailadresserna. Kopiera sedan formeln till alla rader i den kortare tabellen,

Detta kommer för varje namn/mailadress att ge en siffra som visar första raden i den ursprungliga listan där namnet/mailadressen förekommer. För att förenkla hanteringen senare bör du även ställa dig i cellen precis under den sista PASSA-formeln och där lägga in formeln =ANTAL(område), där "område" ska vara samma som i PASSA-formlerna (detta kommer att ge en siffra för det totala antalet rader i den ursprungliga tabellen).

Nästa steg är att använda funktionen FÖRSKJUTNING för att skapa den uppsättning celler som man ska mata in i VBA-funktionen JoinText som jag beskrev tidigare. Då ställer du dig återigen i en tom cell på samma rad som det första namnet/mailadressen i den kortare listan som det avancerade filtret producerade. Skriv sedan formeln =JoinText(FÖRSKJUTNING(referens;tal;0;talnästa-tal;1);", ") där du ersätter "referens" med cellen precis över den första raden i din kolumn C (dvs om det står en rubrik "Frukt" över cellen där det står "Apelsin" i ditt exempel så ska "referens" vara cellen där det står "Frukt") samt ersätter "tal" med PASSA-formeln på samma rad och ersätter "talnästa" med cellen under (dvs cellen med PASSA-formeln på nästa rad). Kopiera sedan denna formel nedåt. Viktigt är även att låsa "referens" så att det blir $-tecken. Detta ska nämligen vara samma på varje rad. Däremot ska "tal" och "talnästa" inte låsas med $-tecken utan ska bli olika på varje rad när man kopierar formeln.

Detta förutsätter att du först har lagt in VBA-funktionen JoinText från mitt tidigare inlägg i en modul i arbetsboken. Du trycker Alt+F11 för att få fram VBA-fönstret, där du ska kopiera in funktionen i en modul. Det beskrivs här hur du skapar en modul.

Skulle det vara så att du inte har någon rubrikrad i den ursprungliga tabellen (dvs att "Apelsin" står på rad 1) så måste du även modifiera FÖRSKJUTNING-formeln en aning. Då skriver du "tal-1" istället för bara "tal" i argumentet direkt efter "referens" (där "tal" återigen är cellen på samma rad med PASSA-formeln).
__________________
Senast redigerad av nihilverum 2017-01-01 kl. 10:31.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in