Gå till innehåll

MH_

Medlem
  • Innehållsantal

    180
  • Gick med

  • Dagar vunna

    20

Allt postat av MH_

  1. Om du har rådata i excel så kan du köra ett länkat diagram (som du har tänkt). Du kan även lägga in en länkad datatabell genom att, i excel: markera de rader du vill visa kopiera I Powerpoint kör du Klistra in special->länkad Nu skall både tabell och figur ändras som du ändrar data i excel ****************************************************** Att ändra diagramdata i en powerpointtabell tror jag däremot blir svårt. Du kan naturligtvis välja att infoga diagrammet direkt i Powerpoint: Infoga->diagram: Då får du ett dedicerat datablad som ligger inbäddat med diagrammet. Om du högerklickar och väljer "redigera data" så får du fram rådatatabellen. MEN så vitt jag vet kan du inte lägga den som en redigerbar tabell på något annat blad.
  2. dela upp på rader med ":," som radbrytare =DELATEXT(A1;;":,") eller t.om "]:," sen får du göra något liknande för att dela upp på kolumner med lämpliga avgränsare =DELATEXT(B1;":") och klistra ihop/radera som du vill Men jag skulle titta på Data->hämta och transformera data. då kan du göra en massa anpassningar och spara det som fråga
  3. Det enklaste är väl att använda filterfunktionen som finns inbyggda i vanliga excel-diagram nuförtiden? Markera diagrammet klicka på filterknappen välj vilka serier du vill visa klicka på knappen [använd] (längst ner i filterfönstret)
  4. Om du skapar en fråga/koppling med hjälp av Data->hämta och transformera data (formerly known as: power Query) så kan du ställa in att frågan uppdateras var 15:minut (högerklicka på frågan -> egenskaper) Men mottagaren (eller, rättare sagt din kollegas excel) måste naturligtvis ha något slags tillgång till masterfilens data om mottagarfilen skall kunna uppdateras. Det borde gå att lägga lösenord i powerQuery-frågan på något sätt och sedan skydda mottagarbladet från insyn: https://support.microsoft.com/sv-se/office/hantera-inställningar-och-behörigheter-för-datakälla-power-query-9f24a631-f7eb-4729-88dd-6a4921380ca9 Annars får du nästan köra något slags VBA kod där du hårdkodar ett lösenord och loggar in var 15:e minut. Då måste du naturligtvis skydda VBA koden på något sätt.
  5. Det skall funka likadant (stå i pivottabellen och gå till infoga->diagram). Hur ser dina data ut?
  6. Formler (i B1): Texten blå 5 ggr i samma cell =REP("Blå";H3) Texten blå fem ggr i fem olika celler: =OM(SEKVENS(H3)>0;"blå") VBA om du vill träna på det: Sub ExampleBlå() Dim i As Integer Dim iAntalBlå As Integer Dim rStartCell As Range 'Hämta värdet från rätt cell (H3) AntalBlå = Sheets("Blad1").Range("H3").Value ' Ange var din startcell ligger. Obs att rSstartCell ' BLIR B1 när man kör Set. Den hämtar inget värde utan ' den blir verkligen b1 Set rStartCell = Sheets("Blad1").Range("B1") ' avsluta om H3 har värdet 0 If AntalBlå = 0 Then Exit Sub ' sen kör du loopen For i = 1 To AntalBlå Sheets("Blad1").Range("B" & i).Value = "Blå" Next i ' Alternativ loop ' Jag skulle personligen ha använt den här koden med .Offset i loopen. ' Men då får du -1 som kan vara svårt att förstå när ' du kollar koden om ett år . For i = 0 To (AntalBlå - 1) rStartCell.Offset(i, 0).Value = "Blå" Next i End Sub
  7. Du kan skapa dynamiska områden med =FÖRSKJUTNING($B$2;0;0;;DAG(IDAG())) eller =$B$2:INDEX($B$2:$AF$2;;DAG(IDAG())) Problemet är att du inte kan använda formlerna direkt i ett diagram. Du måste skapa 3 namngivna områdenoch använda dessa. Skapa rubrikområdet: Formler->definiera namn namn=rubr refererar till:=FÖRSKJUTNING($B$1;0;0;;DAG(IDAG())) Skapa år 2021: Formler->definiera namn namn=ÅR_2021 refererar till:=FÖRSKJUTNING($B$2;0;0;;DAG(IDAG())) Skapa år 2022: Formler->definiera namn namn=ÅR_2022 refererar till:=FÖRSKJUTNING($B$3;0;0;;DAG(IDAG())) Sen får du helt enkelt hänvisa till namnen INKLUSIVE BLADNAMN i diagrammen. Skapa ditt diagram som vanligt. Sen högerklickar du och väljer "markera data" . Klicka på [redigera] för att ändra dataområdena Ändra dataområdets vanliga adresser: till det namngivna rubrikområdet Gör samma sak för själva dataområdena 2021 och 2022. Där du ändrar Serievärdena till de dynamiska namn du skapat. Tex: ='Bok1'!år_2021 ='Bok1'!år_2022 När du är färdig bör du ha ett dynamiskt diagram. Smidigt? nja....
  8. Om du ändrar Range("A2").Select till Range("A1").Select Så funkar det även första gången (när A3:C3 är tomt) en annan metod för att hitta den sista ifyllda är att söka "baklänges" efter jokertecknet "*" i kolumnen Range("A:A").Find(What:="*", SearchDirection:=xlPrevious).Offset(1, 0).Activate Då räcker det att det finns en enda cell med data. xlDown kräver minst två rader data för att funka bra. Dessutom behöver du inte veta vilket format filen har (hur många rader den klarar av) - vilket kräv som du vill köra XlUpp Du kan även skippa klipp/klistra och köra en tilldelning istället. Då blir din kod bara en rad: Sub Makro3() Range("A1").End(xlDown).Offset(1, 0).Resize(1, 3).Value = Range("A2:C2").Value End Sub Men jag misstänker att din kod är enklare att förstå om två år.
  9. MH_

    Roliga avigheter

    Den som väntar på något gott...
  10. Nja. Det beror på. I nyare Excel är matrisformler standard. Så Ctrl+Shift+Enter behovs inte. Å andra sidan måste man ibland skriva @-tecken för att Excel skall fatta att det INTE är en matris. Vem har lovat att det skall vara enkelt?😁
  11. Det klassiska sättet är att helt enkelt slå ihop söksträngen och text-strängarna i sökmatriserna med hjälp av & =PASSA(B9&B10;A1:M1&A2:M2;0) eller sammanfoga om du tycker att det är enklare =PASSA(SAMMANFOGA(B9;B10);SAMMANFOGA(A1:M1&A2:M2);0) Då får du inte träff förrän både Valuta och pristyp stämmer Ett mer logiskt sätt är att skapa en 0/1 matris (sant=1, falskt =0) =(A1:M1=B9)*(A2:M2=B10) Det blir bara 1 när båda villkoren är sanna. Då kan du köra en PASSA där villkoret är att svaret skall vara 1 =PASSA(1;(A1:M1=B9)*(A2:M2=B10);0) Och din LETARAD blir någonting i stil med: =LETARAD(B8;A3:M6;PASSA(B9&B10;A1:M1&A2:M2;0);0) eller =LETARAD(B8;A3:M6;PASSA(1;(A1:M1=B9)*(A2:M2=B10);0);0) Eller också kör du PASSA/Index hela vägen (OBS! PASSA-formeln för kolumn tittar bara i B-M kolumnerna eftersom Index-området startar i B) =INDEX(B3:M6;PASSA(B8;A3:A6;0);PASSA(1;(B1:M1=B9)*(B2:M2=B10);0)) Enligt Excel-gurus det bästa sättet eftersom det är lite resurssnålare. Men i praktiken inget du behöver bry dig om så länge filen håller sig inom rimliga gränser.
  12. MH_

    Roliga avigheter

    Fel optikerkedja. Annars hade det varit klockrent: "du skulle ha gått till specsavers"
  13. MH_

    Musiktråd :-)

    Coolt. Jag tror faktiskt att min farsa skulle ha blivit rätt starstruck om han sett Ella. Själv tutade jag trumpet i musikskolan på 70-talet och det fanns bara en hjälte 🙂gjorde mig av med trumpeten när jag fick tag på en elgitarr. Men Louis är alltid Louis.
  14. MH_

    Musiktråd :-)

    Tråden är på tok för modern. Satchmo i något slag uppfixat format
  15. Fråga 1 Du kan kolla hur många celler som är = artikelnumret OCH cellen till höger =(C3:M3=D3:N3)*(C3:M3=B3) Eller lika med cellen till vänster =(C3:M3=B3:L3)*(C3:M3=B3) slå ihop (kolla om minst en av dem är 1): =(((C3:M3=D3:N3)*(C3:M3=B3)+(C3:M3=B3:L3)*(C3:M3=B3))>0)*1 och summera =SUMMA((((C3:M3=D3:N3)*(C3:M3=B3)+(C3:M3=B3:L3)*(C3:M3=B3))>0)*1) Problemet är att första data-kolumnen alltid blir 1 eftersom det står samma sak i Artikelnummer så den får du trolla bort (om den inte är lika med efterföljande..). =SUMMA((((C3:M3=D3:N3)*(C3:M3=B3)+(C3:M3=B3:L3)*(C3:M3=B3))>0)*1)-(B3=C3)*(C3<>D3) fråga2; så här kan du få en lista =FILTER(C2:M2;C3:M3=B3) eller hårdkodat med texten "AA" =FILTER(C2:M2;C3:M3="AA") Eller om du vill ha det i en cell =TEXTJOIN(", ";;FILTER(C2:M2;C3:M3="AA")) =TEXTJOIN(", ";;OM(C3:M3="AA";C2:M2;"")) Om du bara vill ha siffrorna kan du ta bort texten "Vecka " =BYT.UT(TEXTJOIN(", ";;FILTER($C$2:$M$2;C3:M3="AA"));"Vecka ";"")
  16. =LETAKOLUMN(B1;I1:L8;rad();0) Om du vill låsa områdena får du köra F4 och peta in $-tecken =LETAKOLUMN($B$1;$I$1:$L$8;2;0)
  17. Du använder formler i exemplen du visar. Om det Aktuella område är =$A$1:$A$7 Så skriver du in A1 istället för "cellvärde" Dvs när du skriver formler utgår du alltid från den Översta/vänstra cellen UTAN $-tecken. sen anpassar sig excel efter övriga celler i området. (I ditt andra exempel är det alltså C10 du skall skriva) Om du istället vill använda Formatera alla celler baserat på deras värde (markera cellerna du vill ha formatering på ) Villkorsstyrd->regler för cellmarkering->Mindre än =$D$5 Dvs du "låser" referensen med dollartecken istället för att skriva in ett värde Är det vad du ville?
  18. du kan använda samma kod som du kör när du hämtar formlerna Range(Selection, Selection.End(xlDown)).Select Fast i B kolumnen. Dvs samma sak som att stå i B2 och trycka Ctrl+shift+nedpil : Sub Avrunda_0_Decimaler() Range("B2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Offset(rowOffset:=0, columnOffset:=1).Select Selection.FormulaR1C1 = "=ROUND(RC[-1],0)" Selection.Copy Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select End Sub Och om Monshi skulle få syn på det här så gör vi en variant utan en massa Select och Copy Offset är bara ett sätt att flytta hela området (i vårt fall +1=en kolumn till höger, dvs kolumn C) Sub Avrunda_0_Decimaler() Dim mittOmråde As Range ' bestämm urspungsområde Set mittOmråde = Range("B2", Range("B2").End(xlDown)) 'Skriv in formel i C kolumnen (Mittområde offsetat 1 kolumn) mittOmråde.Offset(rowOffset:=0, columnOffset:=1).FormulaR1C1 = "=ROUND(RC[-1],0)" 'Och ange att B kolumnen skall vara lika med värdena i C mittOmråde.Value = mittOmråde.Offset(0, 1).Value ' Ta bort data från C, om du vill ' mittOmråde.Offset(0, 1).ClearContents Range("A1").Select End Sub
  19. ***ed*** Ändrade: Selection.Cells.Count Till Selection.rows.Count i tredje IF-satsen **/ed** Du får väl helt enkelt göra en massa IF och hantera fel efter fel Har bara kört koden med msgbox på slutet och vet inte om outputfilen blir rätt (när jag skriver det här inser jag att den dessutom kommer att släppa igenom en enkolumnsmarkering utan felmeddelande) Sub tjo() Dim str As String Dim i As Integer If Selection.Areas.Count > 2 Then MsgBox "du får bara välja två kolumner" Exit Sub End If 'Om exakt 2 områden If Selection.Areas.Count = 2 Then 'Kolla att områdena har lika många rader. If Selection.Areas(1).Cells.Count <> Selection.Areas(2).Cells.Count Then MsgBox "Olika antal rader i markeringarna, gör om" Exit Sub End If ' Kör koden för två områden: For i = 1 To Selection.Areas(1).Cells.Count str = str & Selection.Areas(1).Cells(i, 1).Value & vbTab str = str & Selection.Areas(2).Cells(i, 1).Value If Not (i = Selection.Areas(1).Cells.Count) Then str = str & vbNewLine Next i End If 'Om ett område med två kolumner If ((Selection.Areas.Count = 1) And (Selection.Columns.Count = 2)) Then For i = 1 To Selection.Rows.Count str = str & Selection.Cells(i, 1).Value & vbTab str = str & Selection.Cells(i, 2).Value If Not (i = Selection.rows.Count) Then str = str & vbNewLine Next i End If Open "C:\tmp\Tjoho.txt" For Output As #1 Print #1, str; Close #1 End Sub
  20. Om det blir struligt kanske du kan testa med power Query. Det är väldigt smidigt när man skall rensa data och den sparade frågan blir dessutom "dokumenterad". Nackdelen är att det bli en XXXX kod till man måste lära sig.
  21. =LET(n;LÄNGD(A1)-LÄNGD(BYT.UT(A1;"_";""));OM(n=0;A1;OM(n=1;BYT.UT(A1;"_";"");"formel som hanterar >1 _"))) Om 0 "_" hämta värdet från A1, Om 1 st "_" ersätt med "". Annars kör standardformeln Kort och smidigt... =LET(n;LÄNGD(A1)-LÄNGD(BYT.UT(A1;"_";""));OM(n=0;A1;OM(n=1;BYT.UT(A1;"_";"");BYT.UT(BYT.UT(BYT.UT(A1;"_";"-");"-";"_";1);"-";"";LÄNGD(A1)-LÄNGD(BYT.UT(A1;"_";""))-1))))
  22. Tänkte ge en tumme för att du postade lösningen men det var tydligen IDG-specifikt.
  23. Lägg på ett villkor så att den inte skapas någon radbrytning på sista raden så borde du vara hemma: For i = 1 To Selection.Areas(1).Cells.Count str = str & Selection.Areas(1).Cells(i, 1).Value & vbTab str = str & Selection.Areas(2).Cells(i, 1).Value If Not (i = Selection.Areas(1).Cells.Count) Then str = str & vbNewLine Next i Open "C:\tmp\Tjoho.txt" For Output As #1 Print #1, str; Close #1
  24. Haaaa. Jag har inte läst inloggnsfönstret ordentligt. Jag har matat in e-postadressen istället för användarnamnet... Jag matar in lösenordet manuellt. Problemet var att forumet inte accepterade det korrekta lösenordet . Men det var ju rätt eftersom det var skit bakom spakarna ..
×
×
  • Skapa nytt...