Egna formler / beräkningar i Excel!

Permalänk
Medlem

Egna formler / beräkningar i Excel!

Hejsan!

***
Om man vill programmera en egen beräkning till Excel!
Hur gör man?

Vilket programmeringsspråk är bäst att utföra momentet på,
Java eller C++?

***
Här har jag ett konkret exempel
Denna kod skall ersätta den inbyggda OM-formeln i Excel och förhoppningsvis förenkla!

I Cell A1 står det "Poäng" och i cell B1 står det "Betyg".
I Cell A2 till A202 har vi slumpmässiga halva tal mellan 0 till 100 där ett tal får förekomma max en gång.
(0, 0,5, 1 o.s.v. till 99,5 och 100)

Med hjälp av koden skall betyget kunna redovisas i Cell B2 till B202 med hjälp av Autofyll-funktionen.

***
Här nedan presenterar jag den extremt långa betygsskalan med 22 st. termer och resp. poäng för att uppnå dessa betyg!
(Denna listan kan redovisas i cell D1:E22) (Detta skulle vara mycket jobbigt att skriva med OM-formeln)

SMVG: <0,25
SMVG-: 4,995
MVG+: 9,74
MVG: 14,485
MVG-: 19,23
VG+: 23,975
VG: 28,72
VG-: 33,465
G+: 38,21
G: 42,955
G-: 47,7
IG+: 52,445
IG: 57,19
IG-: 61,935
VIG+: 66,68
VIG: 71,425
VIG-: 76,17
MVIG+: 80,915
MVIG: 85,66
MVIG-: 90,405
SMVIG+: 95,15
SMVIG: >99,895

MVH at1981 !!
Ps. Tack på förhand för hjälpen Ds.

Permalänk
Inaktiv

VBA såklart.
http://www.easyexcelvba.com/introduction.html
https://www.youtube.com/watch?v=AIhKNNXzZLM

Det finns sedan hur många sätt som helst att lösa uppgiften på, men rent programmeringsmässigt är vba det enklaste för enkla problem. Även om jag tycker formler borde fungera i ditt fall. C++, java är ett av det mer krångligare sättet att lösa problemet på.

Permalänk
Medlem

Tackar!

@anon159643:

Hejsan!

Jag tackar dig så mycket för informationen!

Varför jag inte nämnde VB är för att jag känner en mycket programmeringskunnig person
som anser att VB börjar bli gammalt och omodernt

Då tänkte jag mer om man skulle kunna använda något som kanske är mer modernt som t.ex.
C++ eller Java!

MVH at1981 !!

Permalänk

Ta valfritt språk du känner dig bekväm i, du vinner inte mycket tid på en snabb implementation då problemet är litet. Börjar du däremot gå upp mot större mängder av tal så kan det vara värt att kolla på implementationen alternativt ett mer lågnivå språk (typ C/C++, eller python med numpy).

Visa signatur

Every time I see some piece of medical research saying that caffeine is good for you, I high-five myself. Because I'm going to live forever.
~ Linus Torvalds (2010-08-03)

Permalänk
Inaktiv
Skrivet av at1981:

@Johan86c:

Hejsan!

Jag tackar dig så mycket för informationen!

Varför jag inte nämnde VB är för att jag känner en mycket programmeringskunnig person
som anser att VB börjar bli gammalt och omodernt

Då tänkte jag mer om man skulle kunna använda något som kanske är mer modernt som t.ex.
C++ eller Java!

MVH at1981 !!

VBA började bli gammal redan runt 2003, men det lär fungera hur länge som helst för det finns inget enkelt smidigt alternativ.

Jag själv har kodat Excel genom VBA, VSTO , ActiveX, Open XML, mängder av OLE bindingar av olika arter, testat någon javascript api etc.. Coola tekniker allihop, men ska man göra något simpelt, ja det finns inget som är enklare i VBA. Och jag menar enklare på precis vartenda sätt.

En liknelse, säg att du ska ringa in ett objekt på en skärmdump vilket program tar du? Troligtvis paint eller annat enkelt, men dra igång ett stort 3D cadprogram, där man lägger in skärmdumpen och genom olika tekniker bryter ut olika objekt på skärmdumpen för att göra gör de fristående för att sedan lägga in en text.
-Ja grymt vid avancerade saker, men ska man göra något enkelt så tar overheadtiden långt mer än vad hela lösningen skulle ta i paint.

Permalänk
Inaktiv
Skrivet av mechersmith:

Ta valfritt språk du känner dig bekväm i, du vinner inte mycket tid på en snabb implementation då problemet är litet. Börjar du däremot gå upp mot större mängder av tal så kan det vara värt att kolla på implementationen alternativt ett mer lågnivå språk (typ C/C++, eller python med numpy).

Varför lågnivå emot excel? Det nya idag är väl javascript? https://dev.office.com/reference/add-ins/excel/excel-add-ins-...
VSTO var inne för några år sedan, men det är lite omständligt att debugga.
OLE bindingar så är C# jättesmidigt emot, både tidig och sen binding.

Men jag tycker det är att göra problemet större än vad det är, ska man göra något enkelt använd då enkla verktyg. Denna åsikt har jag för det mesta, ska man göra små korta enkla anteckningar, lägg ifrån LaTeX, Indesign etc, öppna notepad/onenote istället.
Och välj inte EXSI som "huvudOS/Hypervisor" på eras morsors datorer med en pfsense router även om det nu är bra.

*edit*
Rent programmeringsmässigt är open XML hur coolt som helst och man lär sig så otroligt mycket, både hur en excelfil är uppbyggd, men även om hur programbibliotek fungerar. Men för en nybörjare så är det väldigt många timmar att göra det TS vill genom Open XML.

Permalänk

@anon159643: För att excel är ineffektivt vs vad det går att skriva med typ C,C++,fortran,etc. Är ju om du behöver effektiviteten pga stora datamängder. Själv går jag sällan ifrån python, finns så mycket C bibliotek så svårt att få det snabbare och fortfarande snabbt att skriva i, C# är mer boiler plate.

edit:

Sedan är väl frågan om att programmera inte skripta, dvs inte javascript eller andra skriptspråk.

Vill anknytta till frågan som stäldes mer
Visa signatur

Every time I see some piece of medical research saying that caffeine is good for you, I high-five myself. Because I'm going to live forever.
~ Linus Torvalds (2010-08-03)

Permalänk
Inaktiv
Skrivet av mechersmith:

@Johan86c: För att excel är ineffektivt vs vad det går att skriva med typ C,C++,fortran,etc. Är ju om du behöver effektiviteten pga stora datamängder. Själv går jag sällan ifrån python, finns så mycket C bibliotek så svårt att få det snabbare och fortfarande snabbt att skriva i, C# är mer boiler plate.

Excel går koda på mängder av sätt. VBA är slött, men man kan genom VBA be excel utföra saker och då går det snabbt.

VBA har dock brister vid riktigt stora problem eller då man ska göra verktyg som man ska sälja etc, men man får extra underhållskostnader vid mindre saker. Jag skulle påstå att det stora problemet med VBA är att koden blir ohanterbar när den blir större och man därför måste byta.

Är man ute efter prestanda så är det förövrigt Open XML som man ska köra.
https://msdn.microsoft.com/en-us/library/office/bb448854.aspx

Då behöver man inte ens ha Office installerad på datorn utan man bearbetar filerna direkt, istället för att gå genom OLE eller vad man nu gör.

*edit*
Angående din edit, script eller språk som kan man diskutera skillnaden. VBA kan man man ju se som ett script och många kallar den för macrokod fast den kan 10 000 rader.

Men jag ser det mer som olika typer av lösningar.

1: Open XML eller annan som skriver direkt till XML filerna.
2: Pluggins som VSTO.
3: Active X
4: Allt annat knepigt som nyss har kommit och typ ingen använder, java script är en av dem där man kan skapa pluggins.
5: VBA. Superenkelt, allt inbyggt bara att tuta och köra.
6: OLE Bindning som går gör tidig och sen, bara loosers kör med early bindning säger de. Fördelen med sen binding är att lösningen blir versionsoberoende.

Permalänk
Skrivet av anon159643:

Excel går koda på mängder av sätt. VBA är slött, men man kan genom VBA be excel utföra saker och då går det snabbt.

VBA har dock brister vid riktigt stora problem eller då man ska göra verktyg som man ska sälja etc, men man får extra underhållskostnader vid mindre saker. Jag skulle påstå att det stora problemet med VBA är att koden blir ohanterbar när den blir större och man därför måste byta.

Är man ute efter prestanda så är det förövrigt Open XML som man ska köra.
https://msdn.microsoft.com/en-us/library/office/bb448854.aspx

Då behöver man inte ens ha Office installerad på datorn utan man bearbetar filerna direkt, istället för att gå genom OLE eller vad man nu gör.

*edit*
Angående din edit, script eller språk som kan man diskutera skillnaden. VBA kan man man ju se som ett script och många kallar den för macrokod fast den kan 10 000 rader.

Men jag ser det mer som olika typer av lösningar.

1: Open XML eller annan som skriver direkt till XML filerna.
2: Pluggins som VSTO.
3: Active X
4: Allt annat knepigt som nyss har kommit och typ ingen använder, java script är en av dem där man kan skapa pluggins.
5: VBA. Superenkelt, allt inbyggt bara att tuta och köra.

OpenXML är väl bara en standard för filstruktur, dvs vilket språk som helst kan skriva mot den bara de följer den standard som står specificerat för OpenXML. En standard XML fil har ju bara <tag> data </tag> struktur och OpenXML är bara en påbyggnad. Allt som vid körtid måste skrivas om till vanlig programkod och sedan kompileras och köras är skriptspråk, är i definitionen av att vara ett skriptspråk (innefattar även python). Python har förövrigt hur mycket färdiga bibliotek som helst för att hantera excel filer och att interagera med själva programmet.

Visa signatur

Every time I see some piece of medical research saying that caffeine is good for you, I high-five myself. Because I'm going to live forever.
~ Linus Torvalds (2010-08-03)

Permalänk
Inaktiv
Skrivet av mechersmith:

OpenXML är väl bara en standard för filstruktur, dvs vilket språk som helst kan skriva mot den bara de följer den standard som står specificerat för OpenXML. En standard XML fil har ju bara <tag> data </tag> struktur och OpenXML är bara en påbyggnad. Allt som vid körtid måste skrivas om till vanlig programkod och sedan kompileras och köras är skriptspråk, är i definitionen av att vara ett skriptspråk (innefattar även python). Python har förövrigt hur mycket färdiga bibliotek som helst för att hantera excel filer och att interagera med själva programmet.

Open XML är filstrukturen, Open XML SDK är ett färdigt bibliotek för att hantera denna som jag länkade till. Detta bibliotek går säkerligen köra i de flesta språk genom olika tekniker.

Angående Python så tvivlar jag på att de har så mycket funktioner inbyggd för Excel, snarare är det väl så att de flesta bara använder OLE interfacet emot excel och nästan alla kör med early bindning, vilket leder till att deras lösning som fungerade för Excel 2007 inte direkt kommer att fungera för Excel 2016. Då får de istället använda sig av Late bindning och det blir genast mer komplicerat, det är inget som man brukar börja med.

OLE kan man för övrigt koda i nästan vilket språk som helst, man kan skapa en Wordfil, där man genom OLE styr Excel.

Det går göra en lång diskussion kring vilken teknik som är bäst när och det beror på hur mycket man vill lära sig, men helt är att VBA är det enklaste för enkla problem. Men på samma sätt att MSpaint är enkelt, så kanske det inte är det bästa program för att redigera när man ska jobba med större bilder.

*edit*
Om man ska göra händelsestyrda lösningar där man från Excel kan exekvera kod så bli OLE krångligt, då är kanske Java script eller VSTO ett alternativ istället för VBA. Men Python så har jag svårt att se hur det skulle vara bättre än någon av dessa 3.

Permalänk
Medlem

Jag som inte är programmerare hade använt VBA och select case iaf

Visa signatur

"When I get sad, I stop being sad and be awsome instead, true story."

Permalänk
Inaktiv
Skrivet av Json_81:

Jag som inte är programmerare hade använt VBA och select case iaf

Klokt val. Min poäng är att det går att göra riktigt avancerade lösningar och så finns det en enkel.
Visst den har ett bäst föredatum 2003, Microsoft har varnat hur länge som helst att det är gammal. Men när alla alternativ är extremt mycket svårare så fortsätter folk med det enkla.

Att lära sig VBA går dessutom skitlätt, är man en programmerare så går det snabbt. Om inte, ja då kan man ha nytta av kunskapen när man vill lära sig bättre språk.

Permalänk
Medlem

Mjukvara för programmering!

Hejsan!

Vilken mjukvara är bäst för att kunna programmera i?
Finns det någon mjukvara som klarar av t.ex. både Visual Basic, Java och C++? (Som t.ex. Visual Studio)
Finns det någon programmeringsmjukvara som är gratis vars kod går att implementera i t.ex. Excel?

MVH at1981 !!

Permalänk
Medlem

Spelar ingen roll vilket språk du använder, du måste ändå använda dig av någon form utav if-else satser.

c# är annars ett bra språk att lära sig,

Visa signatur

Bättre än din.
Tagga mig för svar i trådar.

Permalänk
Inaktiv
Skrivet av at1981:

Hejsan!

Vilken mjukvara är bäst för att kunna programmera i?
Finns det någon mjukvara som klarar av t.ex. både Visual Basic, Java och C++? (Som t.ex. Visual Studio)
Finns det någon programmeringsmjukvara som är gratis vars kod går att implementera i t.ex. Excel?

MVH at1981 !!

Bäst kan betyda mycket, det väldigt sällan att det finns något som är bäst på precis allt.
Men Visual studio som du nämnde klarar av de språken du nämnde även om java är exotisk i den.

VSTO ingick i professional versionen av Visual studio förut, den kostar runt 5000kr/år och är då ej gratis.
https://blogs.msdn.microsoft.com/visualstudio/2016/04/26/the-...

Javascript JavaScript Excel add-in APIs
https://www.youtube.com/watch?v=u9IPJ8KKp_A

Jag vet inte vilka versioner av Visual studio som stöder denna du får googla.

OLE intefacet ja du kan använda i princip vad som helst, vill du programmera Excel direkt från Outlook, powerpoint, powershell eller vad du nu vill så sätt bara igång.

Sist så kan man använda VBA och inte behöva installera ett skit, men om detta är för enkelt ja då har du information om olika teknikerna ovanför.

Skrivet av gwingis:

Spelar ingen roll vilket språk du använder, du måste ändå använda dig av någon form utav if-else satser.

c# är annars ett bra språk att lära sig,

Jag förstår inte riktigt vad du menar med if-else satser.
Det finns ett antal olika sätt att styra excel eller bearbeta excelfiler, dessa har jag nämnt ovanför. När man använder dessa tekniker så kan man använda olika språk.

Men utgångspunkten bör först vara vilken teknik man ska använda, ska man köra ole (early eller late bindning), Open XML sdk, eller skapa pluggin av något slag. När man har gjort detta val, ja först då är det intressant att prata om vilket språk.

*edit*
Alla dessa som skapar OLE biningar i Early bining som nog av 99% av utvecklarna gör, så ger jag ej mycket för deras arbete ifall de ej har bra ursäkter som att de kommer underhålla programmet mycket och är beredd på att betala denna kostnad.

*edit2*
Genom OLE så är det t.o.m superlätt att totalstyra excel från autocad och detta riktigt genom Late bindning, men även om något är superlätt som alla programmerare bör kunna (inte utantill), så kan det finnas något sätt som är extremt mycket enklare. (hint vba i excel)

Permalänk
Skrivet av at1981:

Hejsan!

Vilken mjukvara är bäst för att kunna programmera i?
Finns det någon mjukvara som klarar av t.ex. både Visual Basic, Java och C++? (Som t.ex. Visual Studio)
Finns det någon programmeringsmjukvara som är gratis vars kod går att implementera i t.ex. Excel?

MVH at1981 !!

Asså programkod är bara text som tolkas av en interpretator ( programkod -> interpretator -> ... -> körbart program ). Det finns inga krav på vart du skriver programkoden, notepad, Visual Studio, Atom, Emacs, Vim, etc. Testa några textredigerare och se vilka du gillar, det är väldigt mycket smak och tycke mellan de olika som finns och massor av drama runt "den bästa editorn är X".

Personligen tycker jag det är bra att börja med en redigerare som inte har allt för mycket auto-complete på i början.

Visa signatur

Every time I see some piece of medical research saying that caffeine is good for you, I high-five myself. Because I'm going to live forever.
~ Linus Torvalds (2010-08-03)