Hjälp med formel i excel för en maskinräknare

Permalänk
Medlem

Hjälp med formel i excel för en maskinräknare

Hej,

Jag håller på att bygga en formel i excel som ska räkna ut en sak på en motor.

Formeln ser exempelvis ut så här: 20*34*Y

Problemet är att Y är variabel och ändras med motorns varvtal. Så vid olika varvtal ändras Y.

Här har jag manuellt räkna ut vad Y ska vara för varje varvtal från 1200 rpm upp till 3000 rpm med en ökning av 100:

Jag vill alltså ändra min formel så att den först kollar upp vilket varvtal jag har och sedan väljer rätt Y beroende på angivet varvtal.

Exempelvis:
speed >1200 och speed < 1300
Y=37,2

speed > 1500 och speed < 1600
Y=23,6

Hur skulle ni sätta upp och göra en sådan här formel så snygg och enkel som möjligt? Kan jag göra allt som en enda lång formel eller måste jag ha mitt Y värde i en tabell och jobba med lookup? Sparka mig i rätt riktning

Permalänk
Officiell jultomte

Kan du på något sätt hämta motorns varvtal? Eller hur hade du tänkt att jämföra RPM mot excel-filen?

Visa signatur

PC1: i5-13600kf, 32gb DDR5@6000MHz, GTX 1080, Prime Z690-A, Windows 11
PC2: Ryzen 5 5600X, 16GB DDR4, GTX 1070Ti, ROG STRIX B550-F, Windows 10
SRV1: i5 10500T, 16GB DDR4, Debian
Home Assistant-tråden | Stryktipset

Permalänk
Skrivet av hirsch:

Hej,

Jag håller på att bygga en formel i excel som ska räkna ut en sak på en motor.

Formeln ser exempelvis ut så här: 20*34*Y

Problemet är att Y är variabel och ändras med motorns varvtal. Så vid olika varvtal ändras Y.

Här har jag manuellt räkna ut vad Y ska vara för varje varvtal från 1200 rpm upp till 3000 rpm med en ökning av 100:
<Uppladdad bildlänk>

Jag vill alltså ändra min formel så att den först kollar upp vilket varvtal jag har och sedan väljer rätt Y beroende på angivet varvtal.

Exempelvis:
speed >1200 och speed < 1300
Y=37,2

speed > 1500 och speed < 1600
Y=23,6

Hur skulle ni sätta upp och göra en sådan här formel så snygg och enkel som möjligt? Kan jag göra allt som en enda lång formel eller måste jag ha mitt Y värde i en tabell och jobba med lookup? Sparka mig i rätt riktning

Givet att du arbetar med heltal kommer det vara smidigast och effektivast att du pivoterar tabellen du presenterat och lägger Y manuellt genom att dra ner. Undvik stora formler för det kommer bli krångligt att redigera om det skulle behövas. Därefter en vlookup, föredrar dock xlookup eller index(match())

Finns det decimaler kan du sätta en avrundningsfunktion bredvid som hjälper till.

Alternativt så kan du skapa ytterligare en tabell som du refererar till genom if-satser, istället för att skriva alla förhållanden manuellt i en formell.

Finns många sätt att göra det på, men det är väl det minst krångliga utifrån det du berättat

Permalänk
Medlem
Skrivet av Moseby:

Kan du på något sätt hämta motorns varvtal? Eller hur hade du tänkt att jämföra RPM mot excel-filen?

Vi kan säga att varvtalet ligger i cell A1 och att det ändras beroende på vad jag stoppar in i formeln. Varvtalet kan bli precis vad som helst, exempelvis 1203 eller 2854.

Permalänk
Rekordmedlem

Varför hämtar du Y i en tabell i stället för att direkt ange funktionen som räknar fram Y ?

Visa signatur

R5 5600G, Asus ROG STRIX X470-F Gaming, WD SN850X 2TB, Seasonic Focus+ Gold 650W, Aerocool Graphite v3, Tittar på en Acer ET430Kbmiippx 43" 4K. Lyssnar på Behringer DCX2496, Truth B3031A, Truth B2092A. Har också oscilloskop, mätmikrofon och colorimeter.

Permalänk
Medlem
Skrivet av mrqaffe:

Varför hämtar du Y i en tabell i stället för att direkt ange funktionen som räknar fram Y ?

Y är ett värde för friktion/motstånd. Jag räknar ut värdet i ett program från motortillverkaren. Jag kan inte formeln eller matematiken som ligger bakom, tyvärr.

Permalänk
Jubileumsmästare

Förutsatt att det räcker med ökningar på 100rpm så kan du använda dig av "IFS". Viktigt att börja med det största värdet överst, och om det inte stämmer så går den vidare till nästa argument osv.

=IFS( B1>=1700;"18,35"; B1>=1600;"20,7"; B1>=1500;"23,6"; B1>=1400;"27,2"; B1>=1300;"31,6"; B1>=1200;"37,2" )

Vet inte om min hjärna är lite fredagstrött men det är så jag tolkar din beskrivning.

Visa signatur

You have come a long way, baby!

Permalänk
Medlem
Skrivet av BumBumX:

Förutsatt att det räcker med ökningar på 100rpm så kan du använda dig av "IFS". Viktigt att börja med det största värdet överst, och om det inte stämmer så går den vidare till nästa argument osv.

=IFS( B1>=1700;"18,35"; B1>=1600;"20,7"; B1>=1500;"23,6"; B1>=1400;"27,2"; B1>=1300;"31,6"; B1>=1200;"37,2" )

Vet inte om min hjärna är lite fredagstrött men det är så jag tolkar din beskrivning.

Försökte precis testa det här förslaget men får inte =IFS att fungera. Sitter på Office Home and Office versionen, Microsoft® Excel® 2016 MSO (Version 2209 Build 16.0.15629.20152) 32-bit.

Får bara #NAME? error.

Permalänk
Medlem

Krånglar ni inte till det nu?

Cell A1 skriver du varvtal
I B1 skriver du ”=A1*20*34”

Permalänk
Avstängd

Nu har jag inte Excel på min privata dator, men det bör fungera med Letakolumn/Letarad. <ungefärlig> = SANT måste vara ordnad i stigande ordning och det verkar det vara för dig.

https://prod.support.services.microsoft.com/sv-se/office/leta...

Permalänk
Medlem
Skrivet av TANDEMCYKELN:

Nu har jag inte Excel på min privata dator, men det bör fungera med Letakolumn/Letarad. <ungefärlig> = SANT måste vara ordnad i stigande ordning och det verkar det vara för dig.

https://prod.support.services.microsoft.com/sv-se/office/leta...

Det är samma formel som XLOOKUP som föreslogs tidigare i tråden, bara att den heter annorlunda i svenska versionen.

Permalänk
Medlem
Skrivet av hirsch:

Försökte precis testa det här förslaget men får inte =IFS att fungera. Sitter på Office Home and Office versionen, Microsoft® Excel® 2016 MSO (Version 2209 Build 16.0.15629.20152) 32-bit.

Får bara #NAME? error.

Ska nog bara vara IF, dvs inget S med.

Permalänk
Medlem

Jag tror inte den blir mycket enklare än så här, noll förkunskap krävs utan ändra endast "A2" samt "D:E" i formeln till korrekta cellvärden för vilket värde du vill leta upp samt området för din stapel.

Visa signatur

Asus ROG Strix X570-E || AMD Ryzen 9 5900X || 32GB @ 3600Mhz || MSI Radeon 6800 XT "FE" || Corsair AX850W || Fractal Design Define 7 Compact || Noctua NH-D15 Chromax || Samsung 980 Pro 1TB || Samsung 980 Pro 2TB

Permalänk
Jubileumsmästare
Skrivet av hirsch:

Försökte precis testa det här förslaget men får inte =IFS att fungera. Sitter på Office Home and Office versionen, Microsoft® Excel® 2016 MSO (Version 2209 Build 16.0.15629.20152) 32-bit.

Får bara #NAME? error.

Hmm, kan inte svara på rak arm utan att se vad du skrivit. Se bild hur det ser ut i Google sheets. Har inte excel på privata datorn men principen är den samma. Viktigt att ha tungan rätt i munnen så semikolon hamnar på rätt plats, sen använder jag "alt+enter" för att dela upp det i separata rader för att det ska bli enklare att läsa.

Visa signatur

You have come a long way, baby!

Permalänk
Medlem
Skrivet av BumBumX:

Hmm, kan inte svara på rak arm utan att se vad du skrivit. Se bild hur det ser ut i Google sheets. Har inte excel på privata datorn men principen är den samma. Viktigt att ha tungan rätt i munnen så semikolon hamnar på rätt plats, sen använder jag "alt+enter" för att dela upp det i separata rader för att det ska bli enklare att läsa.
<Uppladdad bildlänk>

Mja excel fattar inte ens att =IFS är en formel. Börjar jag skriva =IF...S så kommer ingenting upp i formel listan. Fungerar för mig i Google Sheets. =IF finns och fungerar dock.

Dock valde jag att lösa det med en tabell och lookup. Fungerar bra.

Det jag funderar på nu är ifall jag kan få den att välja Y för ett specifikt varvtal för att göra min beräkning lite mer exakt. Nu kan det ju diffa på 99 varv om varvtalet blir 1201. Då väljer den ju Y för 1300. Kan jag få den att räkna ut vad Y skulle vara för 1201 baserat på att jag vet vad Y är för 1200 och 1300?

1200 = Y 37,2
1300 = Y31,6

37,2-31,6=5,6

5,6/100=0,056

Jag tänker alltså att varje varvtal mellan 1200 och 1300 borde öka Y med 0,056. Jag vet inte om detta matchar exakt rätt men det skulle bli bättre än den nuvarande diffen på 99 varv.

---

En ny frågeställning som jag funderar lite på. Mina ingångsvärden i formeln för att räkna ut varvtalet är tryck, temperatur, flöde och en del andra parametrar. Allt är baserat på amerikanska mätenheter. Alltså psi, deg F, cfm, bhp osv. Hur hade ni gjort för att möjliggöra att man ska kunna välja mätenhet för indata och sedan konvertera vald enhet till rätt amerikansk enhet som behövs för att underliggande formel ska fungera och räkna rätt.

D.v.s för varje input fält lägger jag till en dropdown list brevid som definierar mätenheten på datan jag fyller i. Sedan konverteras datan till "rätt amerikansk enhet" innan det används i formeln för att räkna ut varvtalet.

Permalänk
Medlem

För att hitta värde på Y mellan två varvtal kan du använda Forecast.
https://engineerexcel.com/linear-interpolation-in-excel/

Visa signatur

Rigg:
Chassi: Coolermaster NR200P | CPU: Intel Core i7 10700K | MB: Gigabyte Z490I AORUS ULTRA | GPU: GTX1080ti Stric OC | PSU: Corsair SF750 | OS: Windows 8.1 | RAM: 32GB Corsair Vengeance 3200MHz | SSD: 2x1TB M2 NVME | Monitor: Acer Predator XB271HU

Permalänk
Medlem

Jag vet inte om jag förstått exakt vad du vill göra, men jag gjorde lite snabbt en formel (med några stödceller) för att hitta ett Y-värde för ett varvtal som är mellan två hundratal. Kanske hjälper nåt?

Visa signatur

Rigg:
Chassi: Coolermaster NR200P | CPU: Intel Core i7 10700K | MB: Gigabyte Z490I AORUS ULTRA | GPU: GTX1080ti Stric OC | PSU: Corsair SF750 | OS: Windows 8.1 | RAM: 32GB Corsair Vengeance 3200MHz | SSD: 2x1TB M2 NVME | Monitor: Acer Predator XB271HU

Permalänk
Medlem
Skrivet av tiieempu:

Jag vet inte om jag förstått exakt vad du vill göra, men jag gjorde lite snabbt en formel (med några stödceller) för att hitta ett Y-värde för ett varvtal som är mellan två hundratal. Kanske hjälper nåt?

<Uppladdad bildlänk>

<Uppladdad bildlänk>

Detta verkar ju riktigt intressant men jag får inte till det av någon anledning. Nedan ger mig 13,7932:

Känns som att värdet borde vara någonstans mellan 11,9 och 10,83.

Är problemet kanske att den angivna data rangen inte är linjär?

Permalänk
Medlem

Det sättet jag gjorde, om du kollar i första bilden är att ta ut mellan vilka två varvtal det ska interpoleras. T.ex om varvtalet är 1669 så tar jag fram stödceller med nedrundning till 1600 samt upprundning till 1700 sen använder jag Vlookup för att hitta motsvarande Y-värden (20,55 & 18,15). Det är mellan dessa kända x-värden och y-värden jag interpolerar, inte hela tabellen. För där blir nog som du säger ett problem att datan inte är linjär.

Jag försökte göra hela denna processen i en enda formel, men Excel ger mig nåt error som jag inte förstår mig på.

Min metod är inte helt korrekt heller då y-värdena då inte heller är linjära mellan de avrundade varvtalen, men det är iallafall närmre sanningen.

Visa signatur

Rigg:
Chassi: Coolermaster NR200P | CPU: Intel Core i7 10700K | MB: Gigabyte Z490I AORUS ULTRA | GPU: GTX1080ti Stric OC | PSU: Corsair SF750 | OS: Windows 8.1 | RAM: 32GB Corsair Vengeance 3200MHz | SSD: 2x1TB M2 NVME | Monitor: Acer Predator XB271HU

Permalänk
Medlem
Skrivet av tiieempu:

Det sättet jag gjorde, om du kollar i första bilden är att ta ut mellan vilka två varvtal det ska interpoleras. T.ex om varvtalet är 1669 så tar jag fram stödceller med nedrundning till 1600 samt upprundning till 1700 sen använder jag Vlookup för att hitta motsvarande Y-värden (20,55 & 18,15). Det är mellan dessa kända x-värden och y-värden jag interpolerar, inte hela tabellen. För där blir nog som du säger ett problem att datan inte är linjär.

Jag försökte göra hela denna processen i en enda formel, men Excel ger mig nåt error som jag inte förstår mig på.

Min metod är inte helt korrekt heller då y-värdena då inte heller är linjära mellan de avrundade varvtalen, men det är iallafall närmre sanningen.

Ok, får göra på ditt sätt då om inte någon annat kommer med en bättre idé. Tack

Permalänk
Rekordmedlem
Skrivet av hirsch:

Ok, får göra på ditt sätt då om inte någon annat kommer med en bättre idé. Tack

Har du frågat den som gett dig tabellen om du kan få formeln de använder ?

Visa signatur

R5 5600G, Asus ROG STRIX X470-F Gaming, WD SN850X 2TB, Seasonic Focus+ Gold 650W, Aerocool Graphite v3, Tittar på en Acer ET430Kbmiippx 43" 4K. Lyssnar på Behringer DCX2496, Truth B3031A, Truth B2092A. Har också oscilloskop, mätmikrofon och colorimeter.

Permalänk
Medlem
Skrivet av mrqaffe:

Har du frågat den som gett dig tabellen om du kan få formeln de använder ?

Ja, dom vill inte att man blir oberoende av deras gamla mjukvara. Så ingen hjälp alls ifrån det hållet.

Permalänk

Ser ut att stämma rätt bra med ett tredjegrads polynom, gjorde en polynominterpolation med ungefärliga värden....
Y=162-0,17*speed+6,45*10^-5*speed^2-8,39*10^-9*speed^3

Vill du ha en mer exakt får du testa själv

Permalänk
Medlem
Skrivet av hirsch:

Hej,

Jag håller på att bygga en formel i excel som ska räkna ut en sak på en motor.

Formeln ser exempelvis ut så här: 20*34*Y

Problemet är att Y är variabel och ändras med motorns varvtal. Så vid olika varvtal ändras Y.

Här har jag manuellt räkna ut vad Y ska vara för varje varvtal från 1200 rpm upp till 3000 rpm med en ökning av 100:
<Uppladdad bildlänk>

Jag vill alltså ändra min formel så att den först kollar upp vilket varvtal jag har och sedan väljer rätt Y beroende på angivet varvtal.

Exempelvis:
speed >1200 och speed < 1300
Y=37,2

speed > 1500 och speed < 1600
Y=23,6

Hur skulle ni sätta upp och göra en sådan här formel så snygg och enkel som möjligt? Kan jag göra allt som en enda lång formel eller måste jag ha mitt Y värde i en tabell och jobba med lookup? Sparka mig i rätt riktning

Bästa är att hitta bakomliggande formel, excel har lite funktioner för att hjälpa till, under Data-fliken finns Forecast med what-if analyser och Goal-seek.

nu kan man gissa att formeln är varvtal * friktion^(k1) = k2 , utifrån siffrorna ser det ut som k1<1 ,då testar man med goal seek om excel kan hitta k1 och k2. Annars kan man göra trend-line i x-y plotgrafer som skriver ut en approximering av formeln. Även om det inte blir exakt blir det troligen mer korrekta värden för 1250, 1350 osv. Jag har inte orkat testa, jag gissar utifrån ett fåtal siffror.

Permalänk
Medlem
Skrivet av Mordekai:

Bästa är att hitta bakomliggande formel, excel har lite funktioner för att hjälpa till, under Data-fliken finns Forecast med what-if analyser och Goal-seek.

nu kan man gissa att formeln är varvtal * friktion^(k1) = k2 , utifrån siffrorna ser det ut som k1<1 ,då testar man med goal seek om excel kan hitta k1 och k2. Annars kan man göra trend-line i x-y plotgrafer som skriver ut en approximering av formeln. Även om det inte blir exakt blir det troligen mer korrekta värden för 1250, 1350 osv. Jag har inte orkat testa, jag gissar utifrån ett fåtal siffror.

Ser coolt ut men får det inte riktigt att fungera. Skulle du kunna visa med ett exempel hur du tänker dig?

Permalänk
Medlem
Skrivet av hirsch:

Ser coolt ut men får det inte riktigt att fungera. Skulle du kunna visa med ett exempel hur du tänker dig?

Jag behöver ett excelblad med verklig data, skickar min mailadress i PM.