Gå till innehåll

MH_

Medlem
  • Innehållsantal

    180
  • Gick med

  • Dagar vunna

    20

Allt postat av MH_

  1. Här (tror jag) lyckas de stänga av hela paketet med office-genvägar under: Ctrl+Alt+Shift+Win https://superuser.com/questions/1457073/how-do-i-disable-specific-windows-10-office-keyboard-shortcut-ctrlshiftwinal Dom kör via CMD. Men det verkar handla om att mixtra med registret här: HKCU\Software\Classes\ms-officeapp\Shell\Open\Command Du är nog bättre rustad än mig för att bedöma om det är en bra ide.
  2. Jag brukar högerklicka på filen och göra den betrodd så slipper man tjatet (viss reservation: Vet inte om man får göra det på nätverksenhet.). Men nu när jag tänkte testa så får jag inte fram den möjligheten. Hmmm. Om ni jämfört inställningar i säkerhetscentret förutsätter jag att du kollat att nätverksplatser är ikyssat under : Säkerhetscenter > Inställningar för Säkerhetscenter > Betrodda dokument: "tillåt att dokument i ett nätverk anses vara betrodda" Kolla även motsvarande kryss under: Säkerhetscenter > Inställningar för Säkerhetscenter > Betrodda platser. https://support.microsoft.com/sv-se/office/lägga-till-ta-bort-eller-ändra-en-betrodd-plats-i-microsoft-office-7ee1cdc2-483e-4cbb-bcb3-4e7c67147fb4 Annars vet jag inte. Det kan lika gärna vara en Windowsinställning. Här har du förslag på olika orsaker https://support.microsoft.com/sv-se/office/betrodda-dokument-cf872bd8-47ec-4c02-baa5-1fdba1a11b53 Hos oss har IT spärrat möjligheten att spara inställningen "inaktivera VBA-makron med avisering.". Den lägsta nivån av säkerhet man får välja är "inaktivera VBA-makron utom digitalt signerade....". Så man får skapa ett personligt Certifikat med: C:\Program Files (x86)\Microsoft Office\root\Office16\SELFCERT.EXE Sen får man öppna sin makrobok och signera: Öppna VBA-editorn (ctrl+[F11]), Verktyg-> digital signatur https://support.microsoft.com/sv-se/office/signera-ditt-makroprojekt-digitalt-956e9cc8-bbf6-4365-8bfa-98505ecd1c01 ******utvikning********** Det börjar överlag bli knepigt att använda VBA. Det verkar som om "Automate" och Power Automate med det javaskript-liknande språket (?typescript?) och powerQuery/powerpivot/BI med "M"/DAX är framtidens skriptverktyg i Excel. VBA skapades ju innan säkerheten hade fokus så det finns en uppenbar risk att det hamnar i arkivet tillsammans med gamla "excel4-makron". Dessutom börjar matris-formlerna i excel bli så pass kraftfulla att de klarar av sånt man behövde VBA för tidigare. Jag antar att de gamla hundarna får lära sig "sitt" igen.
  3. **************************************************************************************************** I Eforum hade vi en Tråd med nya funktioner i Excel (som jag råkade döda när jag tog bort mina inlägg). Jag tänkte att vi skulle kunna starta något liknande här. **************************************************************************************************** Textfunktioner: Textmanipulation har aldrig varit Excels starka sida. Men nu finns det tre nya funktioner som hjälper till att splitta textvärden på olika sätt. DELATEXT (text,col_delimiter,[row_delimiter],[ignore_empty], [Skiftägeskänsligt], [pad_with]) Delar upp texten till flera celler utifrån något tecken. Exempelvis genom att splita på kommatecken. Dvs något slag motsats till TextJoin Exempeltext i cell A1: Ett, två, tre, fyra. tio, elva, tolv =DELATEXT(A1;",";;SANT;0) Ger: Man kan även lägga till flera "delare" i en matris. T.ex både komma och punkt {",";"."} =DELATEXT(A1;{",";"."};;SANT;0) Vilket ger Det finns även färdiga formler för att plocka ut delar till en cell. Textföre() hämtar allt till vänster om skiljetecknet =TEXTFÖRE(text,avgränsare,[instance_num], [match_mode], [match_end], [if_not_found]) Där instance_num kan vara både positivt och negativt. Ett negativt nummer betyder att man räknar från slutet =TEXTFÖRE(A1;",";1) ger svaret , dvs allt innan det första kommatecknet medan: =TEXTFÖRE(A1;",";-1) ger svaret , dvs man visar allt innan det sista kommatecknet (första från slutet) Det finns även en likadan formel som räknar från slutet. =TEXTEFTER(A1;",";2) ger , dvs allt efter det 2:a kommatecknet medan: =TEXTEFTER(A1;",";-2) ger dvs allt efter det 2:a kommatecknet från slutet: MATRISTILLTEXT gör att du kan slå ihop flera celler till en text på ett strukturerat sätt (tänk Mikael skapar skript). Antag att vi har en matris i A1:D2 =MATRISTILLTEXT(A1:D2) ger då resultatet (i en cell) . Men om man skrver in argumentet "Strikt format" =MATRISTILLTEXT(A1:D2;1) Blir reultatet istället: . Vilket kan vara väldigt användbart om man vill bygger skript/former eller liknande. =VÄRDETILLTEXT(A1;1) gör samma sak för en cell i taget. Dvs 1 blir 1 medan Ett blir "Ett" Hmmmm. Varför googla innan? Här är en sammanställning av textfunktioner: https://support.microsoft.com/sv-se/office/textfunktioner-referens-cccd86ad-547d-4ea9-a065-7bb697c2a56e exempelvis =VALUTA(A1) som omvandlar talet i A1 till en textsträng med valutaformat, typ: 29.00 kr =FASTTAL(A1;5) som omvandlar talet i A1 till en textsträng med 5 decimaler Men det kan man ju lika gärna göra med TEXT() och avrunda INITIAL() gör så att alla ord börjar med stor bokstav. Ett bra komplement till VERSALER() och GEMENER() Matrismanipulationer Antag att du t.ex har matat in data på flera blad. Det har alltid varit extremt svårt att slå ihop data till en datatabell som man faktiskt kan räkna med (Och Monshi har på ett tålmodligt sätt förklarat varför det var ett dumt upplägg) Men Nu kan du stapla ihop data till en enda lång vertikal kolumn(er) med hjälp av VSTACK Exempel om du har data i cell A4:B30 i blad 2 till Blad7 =VSTACK(Blad2:Blad7!A4:B30) Nu får du all data efter varandra i 2 kolumner som du kan räkna på (tyvärr kan man inte använda VSTACK direkt i t.ex ANTAL.OM som inte stödjer 3:D formler) Data du vill slå ihop kan naturligtvis finnas på samma blad också. Typ: =VSTACK(A1:A6;C1:C6;E4:E6) Det finns en motsvarighet för horisontella data som heter Hstack() Om man har data i en matris kanske man vill ha indata i en enda kolumn då kan man köra: =TILLKOL(A1:E6) som lägger hela matrisen som en kolumn (för att få en rad kör du istället TILLRAD) Du kan även bestämma om vissa typer av värden skall hoppas över 0=Behåll alla värden (standard), 1=Ignorera tomma värden, 2=Ignorera fel,3=Ignorera tomma värden och fel =TILLKOL(A1:E6;1) tar t.ex inte med tomma celler (annars blir de 0) Det här är användbart om man behöver räkna på alla siffror i en tabell och behöver ha data liggande i samma kolumn Man kan även köra motsatsen till TILLKOL BRYTKOLUMN(matris; bryt efter) gör om en kolumn med data till en matris. Exempel där den bryter efter 3 siffror och börjar på nästa kolumn Det finns även nya formler för att hämt ut bestämda kolumner/rader ur en matris: TA() väljer de första/sista rader/kolumner man vill se (+-) =TA(A1:E6;2) ger de två första raderna =TA(A1:E6;-2) ger de två sista raderna =TA(A1:E6;;-3 ger de tre sista Kolumnerna) Och motsatsen är UTESLUT, Eller välj ut precis vilka kolumner du behöver, och i vilken ordning, med Väljkol. Det här ger t.ex kolumn 3, 1, 5 =VÄLJKOL(A1:E6;3;1;5)
  4. Eftersom " är en textavgränsare (som inte skall synas) så blir det väldigt knepigt att få in ett synligt " i en textsträng. I en del program skiljer på " och '. Fast inte... i t.ex SPSS skulle: MinText & """)" Blir 'MinText' & '")' Med reservation för att jag inte minns om man använder & i SPSS-skript. I excel skriver man in två "" inom citattecknen för att få ut ett synligt ". Typ " "" " men sammanskrivet """"" Och om det står i ena änden av strängen blir det 3 st ", typ: """ xxx" =SAMMANFOGA("Här skall det synas ett: ";"""-tecken") Ett ensamt "-tecken blir det 4 """" på rad (läs som " "" ") =SAMMANFOGA("Här skall det synas ett: ";"""";"-tecken") eller om det är en enda textsträng =SAMMANFOGA("Här skall det synas ett: ""-tecken") Typ samma sak i VBA. Det där är lite extra förvirrande eftersom "" normalt sett betyder tom sträng/tomt värde. Men mellan två Citattecken betyder det uppenbarligen ett citattecken ...
  5. Sitter med telefon nu och har inte prövat formeln. Men i princip: =OMFEL(dinformel;"värde om fel") Dvs något i den här stilen =OMFEL(PASSA($J2;B$2:B$11;0);"Ledig")
  6. I cell K2 kan du peta in den här formeln =SUMMA.OM(B$2:B$11;$J2;$A$2:$A$11) Kopiera hela vägen till o4 (eller fyll med "handtaget") Den summerar helt enkelt rumsnumret (A-kolumnen)för de rum pelle använder på en måndag. När du byter rad så letar den efter Jessicas namn istället och när du byter kolumn tittar den i en annan dag. Om pelle förekommer mer än en gång i måndagskolumnen så blir det naturligtvis fel Om du vill ha hjälp att skapa namnlistan kan du peta in den här i J2 =UNIK(TILLKOL(B2:F4)) Obs! kräver en ganska ny excel. Om du inte gillar SUMMA.OM så kan du testa den här istället. Då får du ett felmeddelande om Pelle förekommer 2 ggr på samma dag. I cell K2: =PASSA($J2;B$2:B$11;0)
  7. "Vanliga" bandbackupper lever ju kvar i special-lösningar (om man kör på rätt sätt är de t.ex immuna mott gisslan-program). Banden har väl dödförklarats ett antal gånger redan under det förra årtusendet. Å andra sidan har väl optiska media, disketter och zip-drives i princip förpassats till Historiens skräphög. Men jag skulle tro att den mekaniska HD:n kommer att leva vidare på samma sätt som Banden. Jag kan lätt se att storkonsumenter i stil med "elektronikfreak" har ett antal olika lagringstekniker för att hantera data med olika pris, åtkomstkrav och känslighet även i framtiden.
  8. Din bild är försvunnen. Men om jag minns det lilla jag så igår så du testa någonting i den här stilen. Jag antar att tabell2 ligger i A-kolumnen på blad2 och Tabell 1 ligger på blad1 Formelförslag till blad1, cell C2 1). kolla om namnet i cell A2 finns i kolumn A, blad2 =ANTAL.OM(Blad2!A:A;Blad1!A2) eller =PASSA(A2;Blad2!A:A;0) 2. gör om till ett villkor. Tex så här =(ANTAL.OM(Blad2!A:A;Blad1!A2)=0) =ärfel(PASSA(A2;Blad2!A:A;0)) 3. Peta in i en OM-sats. OM(namnet saknas;hämta siffran i B2; annars skriv ingenting"") =OM(ÄRFEL(PASSA(A2;Blad2!A:A;0));B2;"") eller =OM(ANTAL.OM(Blad2!A:A;A2)=0;B2;"")
  9. Det enklaste är väl bara att ta bort 5 tecken på slutet. Om du är osäker (om det t.ex finns filer i gamla . xls format) så kan du istället hitta den sista punkten (med InStrRev)och ta bort allt till höger om den. Sub qwwerty() Dim sSökväg As String Dim sFilnamn As String sSökväg = ActiveWorkbook.Path sSökväg = sSökväg & "\" sFilnamn = ActiveWorkbook.Name sFilnamn = Left(sFilnamn, InStrRev(sFilnamn, ".") - 1) sSökväg = sSökväg & sFilnamn & ".pdf" End Sub Där jag antar att den sista .PDF kan tas bort
  10. Om du har en kolumn med datum så kan du ju lägga in ett villkor för det också (SUMMA.OMF tillåter ju flera villkor) och bar räkna sånt som händer före dagens datum. Eller inte. Krångla inte till det om du är nöjd.
  11. ActiveWorkbook, thisWorkbook och Me betyder lite olika saker MsgBox "boken du jobbar med finns i mappen: " & ActiveWorkbook.Path MsgBox "makrot ligger i mappen: " & ThisWorkbook.Path Vill du ha sökvägen till excelfilen som du kopierar området ifrån? Om den är sparad borde det här funka: Sub test() Dim sSökväg As String sSökväg = ActiveWorkbook.Path 'lägga på filnamnet sSökväg = sSökväg & "\" &ActiveWorkbook.Name End Sub Om du startar makrot från ett formulär tror jag att du kan använda ME.xxxx också. Men "ME." är ganska flummigt. Jag är nästan säker på att Monshi låste en tråd om det där på Eforum
  12. Med den här metoden går det inte. Eftersom.. "!$D$5:$D$40" ..är en textsträng så finns det ingen som helst koppling till det som händer på databladen Om du inte har mer info på bladet (nedanför D40)så är det enklaste att helt enkelt låta formeln peka på ett större område, typ "!$D$5:$D$4000" och hoppas att du aldrig får mer än 3995 rader... eller ta hela Kolumnerna (eftersom det måste stå "ABC" i villkorskolumnen så är ju risken för att du tar med rader som inte skall vare med väldigt lite) Dvs motsvarigheten till =SUMMA.OMF(jan!$D:$D;jan!$C:$C;"ABC") Det blir något i stil med: =SUMMA.OMF(INDIREKT(C$1&"!$D:$D");INDIREKT(C$1&"!$C:$C");"ABC") Normalt sett brukar man undvika att ha för stora områden i formler. Men excel har blivit väldigt bra på att begränsa området själv så det borde inte bli "segt". Om du inte kan använda ett stort område så måste du köra mycket krångligare varianter (om det överhuvudtaget går) för att få det dynamiskt. Testa om Helkolumn, eller för många rader, funkar för dig innan vi krånglar till det i onödan.
  13. Den här delen skulle ha fortsatt att peka på A1. TEXT(EDATUM(1;KOLUMN(A1)-1) Det var bara ett sätt att skapa texten jan, feb osv. När du började från C1 så borde du ha fått resultaten för mars. Men, eftersom du redan har månaderna (fliknamnen) i C1:N1 så är det enklare att använda det istället. =SUMMA.OMF(INDIREKT(C1&"!$D$5:$D$40");INDIREKT(C1&"!$C$5:$C$40");"ABC") Om din formel: =SUMMA.OMF(Jan!$D$5:$D$40;Jan!$C$5:$C$40;"ABC") Funkar så bör även den jag skrev fungera. Testa de olika delarna. Ger det här en text som ser ut som adressen till flik "Jan", dvs: Jan!$D$5:$D$40 ? =C1&"!$D$5:$D$40" Och, om du har en modern excel, ger det här 35 rader med data från januarifliken? =INDIREKT(C1&"!$D$5:$D$40") Om du har en gammal excel måste du eventuellt mata in det som matrisformel (CTRL+SKIFT+RETUR när du står i cellen med formeln). Ähh, testa och återkom om det inte funkar.
  14. MH_

    Roliga avigheter

    Och vi som har något slags ekonom-utbildning (och får skämta om sånt) brukar säga att det finns tre sorters Ekonomer. De som kan räkna och de som inte kan räkna.
  15. Nej. Men du kan klistra ihop adressen så att den ändras när du byter kolumn, Typ: =TEXT(EDATUM(1;KOLUMN(A1)-1);"MMM")&"!$D$5:$D$40" =SUMMA.OMF(INDIREKT(TEXT(EDATUM(1;KOLUMN(A1)-1);"MMM")&"!$D$5:$D$40");INDIREKT(TEXT(EDATUM(1;KOLUMN(A1)-1);"MMM")&"!$C$5:$C$40");"ABC") Eller, enklare, genom att skriva in fliknamnen någonstans.
  16. Som du redan upptäckt så verkar inte Ctrl + Shift + V stödjas av (modern?) excel. Men du kan testa: [Ctrl]+[Alt]+V, V [enter] [Ctrl]+[Alt] ger Klistra in special fönstret och +V väljer "värde" Men det är inte riktigt konsekvent när du kopierar saker utanför excel Annars kan du testa det kortare [Menyknappen] +V (Menyknappen = "högerklicksknappen" mellan Alt Gr och det högra Ctrl på ett "stort" tangenbord). Men det är ju samma sak som att högerklicka och det funkade ju inte alltid för dig.
  17. MH_

    Roliga avigheter

    Eftersom det nyss var nyår Den nya stjärnan i Tornerspelen. Den Ryske Riddaren Ivan Hoe https://www.youtube.com/watch?v=IU4akcp8h_Y
  18. Jag använder det som sagt var inte själv och jag har bara ett konto i Outlook så jag har inga fler förslag. Eller, kolla punkt 4 i "lösningssvaret" i den här tråden https://answers.microsoft.com/en-us/outlook_com/forum/all/how-to-change-the-senders-email-address-in-mail/86110d33-3330-45b3-a7d4-dc9a5cf2e528 "4. Then go to File/Options and under the Mail Category/Send Options make sure that the "Always Use the Default Email to Send Messages" is checked off."
  19. Använder inte funktionen själv. Men om jag missförstår det rätt så används alltid Outlooks standardkonto. Om du har flera konton ändras det via: Arkiv->info->kontoinställningar->kontoinställningar: "ange som standard" för det konto du vill skicka från
  20. =OMFEL(dinformel;0) Men krånglar du inte till det i onödan? Den här borde funka i B10 (sen kan du kopiera till övriga Gula celler) =(C10=$J10)*1 Eller: =om(C10=$J10;1;0)
  21. MH_

    Programväljare

    Det är väl bara att högerklicka och köra "öppna med"? Tyvärr har jag ingen aning om hur man får in program på "kortlistan". Jag TROR att den visar de program du tidigare valt att använda någon gång (eller också krävs det ett registerhack).
  22. MH_

    Roliga avigheter

    Vilken tur att de han få ut eleverna.
  23. Då kan du ju klura på om det här funkar (samma logik som powerQueryn)... =INDEX(DELATEXT(A1;{"DKK:G:";":1 pieces:[";" "};":,");SEKVENS(ANTALV(DELATEXT(A1;":,")));{1,3,4,7}) eller om den här är bättre =INDEX(DELATEXT(A1;{"DKK:G:";":1 pieces:[";" "};":,");SEKVENS(ANTALV(DELATEXT(A1;":,"))-1;;2);{1,3,4,7}) Queryn är rätt smidig när man ser det på det viset...
  24. Power Query (exempel om dina data ligger i en cell - allt utom starten är likadant om du importerar direkt från en textfil) Markera cellen med dina data i. Gå till Data->hämta transformera: från tabell/intervall Nu har du förmodligen bara en cell i powerquery's förhandsgranskning. Gå till Start->dela upp kolumn: efter avgränsare Ändra "välj eller ändra avgränsare" till "anpassad" och klistra in avgränsaren ":," (utan citattecken) Sen klickar du på "avancerade alternativ" och ändra "dela i" till "rader" Nu bör du ha 6 rader. Upprepa "dela på kolumn" Start->dela upp kolumn: efter avgränsare Men klistra in "DKK:G:" istället (utan citat-tecken) och kolla så att avancerad står på "kolumn" Markera din nya kolumn 2 och upprepa "dela upp kolumn" men med ":1 pieces:[" (utan citat) Sen tar du din nya kolumn 3 och delar på blanksteg (finns att välja) Om datumen har konverterats till svenska datum så kan du kolla på "kodlistan" till höger och ta bort den sista "ändra typ" Radera tids-kolumnerna (om du inte vill ha dom, annars tar du bara bort sista hakparantesen "]"). Du kan även ta bort första raden om den alltid är nonsens. Och kanske ge vettiga kolumnnamn Stäng och läs in PS Om du vill konvertera datumen från text kan du högerklicka och välja "ändra typ". Tyvärr kan du inte välja "datum" direkt eftersom queryn kommer att utgå ifrån att det är amerikanska datum. Du får istället välja "använd språkinställningar" längst ner och välja "datum" och något europeiskt land (t.ex engelska: europa) PS2 När du står i frågeredigeraren så kan du gå till START->avancerad redigerare och kolla på din frågekod. Så här blev det för mig (alla namn är automatskapade och jag har tagit de automatiska typändingarna) let Källa = Excel.CurrentWorkbook(){[Name="Tabell1"]}[Content], #"Dela upp kolumn efter avgränsare" = Table.ExpandListColumn(Table.TransformColumns(Källa, {{"Kolumn1", Splitter.SplitTextByDelimiter(":,", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Kolumn1"), #"Dela upp kolumn efter avgränsare1" = Table.SplitColumn(#"Dela upp kolumn efter avgränsare", "Kolumn1", Splitter.SplitTextByDelimiter("DKK:G:", QuoteStyle.Csv), {"Kolumn1.1", "Kolumn1.2"}), #"Dela upp kolumn efter avgränsare2" = Table.SplitColumn(#"Dela upp kolumn efter avgränsare1", "Kolumn1.2", Splitter.SplitTextByDelimiter(":1 pieces:[", QuoteStyle.Csv), {"Kolumn1.2.1", "Kolumn1.2.2"}), #"Dela upp kolumn efter avgränsare3" = Table.SplitColumn(#"Dela upp kolumn efter avgränsare2", "Kolumn1.2.2", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Kolumn1.2.2.1", "Kolumn1.2.2.2", "Kolumn1.2.2.3", "Kolumn1.2.2.4", "Kolumn1.2.2.5"}), #"Borttagna kolumner" = Table.RemoveColumns(#"Dela upp kolumn efter avgränsare3",{"Kolumn1.2.2.2", "Kolumn1.2.2.3", "Kolumn1.2.2.5"}), #"Ändrad typ med nationella inställningar" = Table.TransformColumnTypes(#"Borttagna kolumner", {{"Kolumn1.2.2.1", type date}, {"Kolumn1.2.2.4", type date}}, "en-150"), #"Borttagna topprader" = Table.Skip(#"Ändrad typ med nationella inställningar",1) in #"Borttagna topprader"
  25. om vi kör formler (enklare att skriva på nätet) så kan du lägga in allt du vill använda som delare i en matris: {",";" to ";"DKK:G:";":1 pieces:[";":1 pieces:[";"]"} Svårt att läsa, men det är 5 saker: {","; " to "; "DKK:G:"; ":1 pieces:["; ;"]"} eller så här om man petar in det i formeln: =DELATEXT(A1;{",";" to ";"DKK:G:";":1 pieces:[";"]"};":,") Då blir det väl ungefär som du vill? I alla fall om du formaterar datumkolumnerna utan tidsvisning
×
×
  • Skapa nytt...