Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Fel i Excel?

Postades av 2007-02-05 16:04:53 - Stefan Brännström, i forum microsoft office, Tråden har 13 Kommentarer och lästs av 2873 personer

Körde just en utbildning i MS Excel 2003 för några personer... och skulle visa OM()-funktionen. Då dessa personer jobbar i diverse sportföreningar så skapade jag en resultatlista med namn, starttid, sluttid och kvalgräns, ex:
<info>
A B C D E
1 Namn Starttid Sluttid Tid Kvalificerad
2 Kalle 10:00 10:59 00:59 =OM(D2>$C$9;"Nej";"Ja")
3 Nisse 10:05 11:02 00:57 ||
4 Pelle 10:10 11:05 00:55 \ /
5 Olle 10:15 11:07 00:52 V
6 Kajsa 10:20 11:15 00:55
7 Stina 10:25 11:22 00:57
8
9 Kvalgräns 00:55
10 Vinnande tid =MIN(D2:D7)
</info>
Användandet av OM()-funktionen ovan verkar "godtyckligt" välja "Ja" eller "Nej" om tiden är lika med kvalgränsen. Har testat ändra formatet till att ta med sekunder samt till att vara ett decimaltal utan någon skillnad. Jag antar att det har att göra med den logiska jämförelsen av tid, men det blir alltså fel ibland även om jag använder decimaltal... Någon som kan förklara detta eller är det ett fel i Excel?

Testade även =OM(D2<=$C$9;"Ja";"Nej")... med samma resultat...


Svara

Sv: Fel i Excel?

Postades av 2007-02-05 16:32:40 - Suzanne Ahlvin

Testade med annan formatering. Kanske kan det vara något sådant?

Markera:

B2:D7

Välj i menyn: Format/cells.../custom

skriv in:

00":"00

tryck OK


sen får du skriva in klockslagen i den formaterade formen. tex klockan fem över tio blir 1005


(jag provade också att skriva följande i D2: =B2-B1 och kopierade nedåt till D7)

Det funkar hos mig. Men det kan ju vara att jag inte riktigt förstått hur du menat annars. (jag har engelsk version av Excel så jag fick skriva IF).


Svara

Sv: Fel i Excel?

Postades av 2007-02-05 16:55:39 - Niklas Jansson

Anledningen är nog helt enkelt att alla tiderna internt representeras som ett flyttal, diffen blir ett flyttal, och alla vet hur det är att jämföra två sådana. Du hamnar helt enkelt lite över eller lite under ibland.


Svara

Sv:Fel i Excel?

Postades av 2007-02-05 20:18:38 - Stefan Brännström

Niklas:
Misstänker att det är något sådant jag med...

Suzanne:
Jepp... naturligtvis lät jag värdet i D-kolumnen beräknas... glömde bara visa det i frågan ovan.
Jag förstår hur du menar med ett anpassat format, men då tappar jag ju själva "funktionen" med att använda tidformat, dvs 60 min på 1 timme osv...

----

Resultatet på OM()-funktionen verkar inte vara konsekvent... för vissa "tävlande" så funkade den som den skulle men för vissa funkade den inte... men det kan ju bero på att starttiden är olika.

----

Tack för era svar hur som helst! =)

ps. Kanske i detta fall skall använda DateDiff() istället? Kursdeltagarna var dock "nybörjare" så jag ville inte blanda in VBA...


Svara

Sv: Fel i Excel?

Postades av 2007-02-05 22:17:29 - Martin Adrian

Kan du ge exempel på något som inte fungerar. Provade alla dina värden ovan och de fungerar för mig.

>Körde just en utbildning i MS Excel 2003 för några personer.
>Har testat ändra formatet till att ta med sekunder samt till att vara ett decimaltal utan någon skillnad.
>Jag antar att det har att göra med den logiska jämförelsen av tid, men det blir alltså fel ibland även om
> jag använder decimaltal...

???
Om du utbildar i Excel borde du väl veta att formatteringen inte påverkar resultat av formler.


Svara

Sv:Fel i Excel?

Postades av 2007-02-06 07:25:34 - Stefan Brännström

Du har ett exempel på något som inte fungerar i mitt första inlägg ovan... Får du inte till det kan du ladda ner reslutat.xls från följande webbsida:

http://195.196.91.237/ky/filbank.asp?kat=25

<b>Om du utbildar i Excel borde du väl veta att formatteringen inte påverkar resultat av formler.</b>
Kanske var lite otydlig där. Testade bara med sekunder samt decimaltal vid felsökningen. Har utbildat i Excel under ca 15 års tid...

Är ganska säker på att Niklas har rätt, att felet beror på att Excel avrundar decimaltal(flyttal)...
<info>
Vi vet att, ex:
(1/24/60*55) - (1/24/60*55) = 0

Vi vet även att, ex:
55 minuter - 55 minuter = 0 minuter

Excel räknar dock detta med avrundade flyttal, ex:
0,038194444 - 0,038194444
vilket inte alltid verkar bli 0... och där är problemet(felet)
</info>


Svara

Sv: Fel i Excel?

Postades av 2007-02-06 09:48:44 - Martin Adrian

>Kanske var lite otydlig där. Testade bara med sekunder samt decimaltal vid felsökningen. Har utbildat i
>Excel under ca 15 års tid...

Det var ju just det jag menade. Sekunder finns inte i Excel. Det är bara ett sätt att formattera ett värde. Vad är decimaltal i excel?

Kanske jag har missat något men jag trodde att Excel bara har tre datatyper, text, tal (double) och formel. Sen kan man välja att visa tal på lite olika sätt (datum, tid, procent, olika antal decimaler mm).
Beräkning sker alltid med tal oavsett hur det visas


>Är ganska säker på att Niklas har rätt, att felet beror på att Excel avrundar decimaltal(flyttal)...
Så lösningen är

Abs(Slut - Start)<Time(0;0;1)


Svara

Sv:Fel i Excel?

Postades av 2007-02-06 10:28:46 - Stefan Brännström

<b>Sekunder finns inte i Excel.</b>
Sekunder finns som begrepp i MS Excel (hh:mm:ss), dock representeras 1 sekund av ett flyttal som är 1/(24*60*60) och detta är definierat i datatypen Date.

<b>Kanske jag har missat något men jag trodde att Excel bara har tre datatyper, text, tal (double) och formel.</b>
Ja, du har nog missat något. MS Excel använder följande datatyper: String, Byte, Integer, Long, Single, Double, Currency och Date

<info>
Single och Double är flyttal(decimaltal) med enkel respektive dubbel precision

Datatypen Date består egentligen av två flyttal där det första representerar datum (dagar från och med 1900-01-01) och det andra tid (dygn).
</info>


Svara

Sv: Fel i Excel?

Postades av 2007-02-06 18:09:24 - Martin Adrian

>Ja, du har nog missat något. MS Excel använder följande datatyper: String, Byte, Integer, Long,
>Single, Double, Currency och Date

Du har säkert rätt.

När jag sökte i hjälpen hittar jag dock inget om datatyper i excelblad förutom "number" och "text".

Sökte till exempel på currency men det jag hittär är typ "Display numbers as currency".

Samma sak på Date. Funktionen Date() "returns the number that represents the date".

Det finns funktioner för att konvertera mellan number och text men hittar inga andra konverteringsfunktioner.

Kan du ge ett exempel på hur man använder de olika datatyperna i ett excelblad.

>Single och Double är flyttal(decimaltal) med enkel respektive dubbel precision
Flyttal och decimaltal är väl inte samma sak?


Svara

Sv:Fel i Excel?

Postades av 2007-02-06 18:30:54 - Stefan Brännström

<b>Flyttal och decimaltal är väl inte samma sak?</b>
Vad är skillnaden?


Svara

Sv: Fel i Excel?

Postades av 2007-02-07 07:55:53 - Martin Adrian

>><b>Flyttal och decimaltal är väl inte samma sak?</b>
>Vad är skillnaden?

Flyttal (Floating Point) innebär att decimalpunkten flyttas för att i varje tillfälle ha bästa möjliga precision.

Decimaltal brukar normalt innebära tal som lagras med basen 10.

På en PC lagras flyttal med basen 2 och är således inte decimaltal.

Det finns decimala datatyper i t.ex. VB (Currency) och .Net (System.Decimal) men där är antalet decimaler fast så de är således inte flyttal. Det är dock möjligt att ha decimala flyttal. Har för mig att det en sån som förslagits för nästa C/C++ standard. (Ingen aning om vad det skall vara bra för. Decimala tal vill man väl ha för att de är exakta)

----
Gjorde lite tester med olika datatyper i Excelblad. Det jag gjorde var att jag skrev följande kod
Sub Test
MsgBox TypeName([A1].Value)
End Sub

Resulatat blev så här:
- Om cellen innhåller text blir typen alltidid String oavsett vilken formattering man använder.
- Om jag skriver vilket tal som helst, med eller utan decimaler blir typen alltid "double" oavsett om man visar decimaler eller inte. Provade även med =Int(3,14) men det blev också "double".
- Om jag formaterar ett tal som datum så blir faktiskt typen "Date" men om jag formatterar den som en tid så blir typen "double".
- Om jag formatterar som "Currency" så blir typen "double"
- Om jag formatterar ett tal som "Text" så blir typen "double"

Blir inte klok på ovanstående. Det verkar som formatet påverkar typen men enbart för Date?
Kan du förklara var du menar med att excel har alla de datayper du räknar upp och hur man använder dem?


Svara

Sv:Fel i Excel?

Postades av 2007-02-07 18:23:09 - Stefan Brännström

<b>Kan du förklara var du menar med att excel har alla de datayper du räknar upp och hur man använder dem?</b>

Här: www.fuckinggoogleit.com

Sök efter "data types VBA"...
Förresten så glömde jag två datatyper... Boolean och den "vansinniga" Variant... ;)


Svara

Sv: Fel i Excel?

Postades av 2007-02-07 21:13:37 - Martin Adrian

>Här: www.fuckinggoogleit.com

Den sidan börjar med "Someone thinks you are an idiot..."

Tack för det.

>Sök efter "data types VBA"...

Varför skall jag söka efter VBA? Det var ju inte vilka datatyper som finns i VB och dess varianter jag var ute efter. VBA har ju tillgång till alla datatyper som finns i COM men det har ju inget med vilka datatyper som finns i Excel. (Har alltid misstänkt att powerpointpresentationer är av typen Currency och det är ju tydligen fullt möjligt).

Hittade dock att det finns en funktion i Excel (som kan anropas via VBA) som heter "CellType". Den funktionen kan returnera följande värden:

Blank, Text, Logical, Error, Date, Time, or Value

Det borde väl vara svaret på vilka datatyper som finns i Excel.

Dessa stämmer dessutom med de typer jag kunde får fram med min funktion ovan (förutom time) även om de heter lite annorlunda.


Svara

Sv:Fel i Excel?

Postades av 2007-02-07 22:16:45 - Stefan Brännström

<b>Den sidan börjar med "Someone thinks you are an idiot..."

Tack för det.
</b>
Det var inget allvarligt menat med det, utan jag menade att svaret på din fråga hittar du om du söker på Google.
Förlåt om du tog illa upp...

VBA (Visual Basic for Applications) är skriptspråket för Excel. Om man inte dimensionerar en variabel i VBA så väljer Excel att göra den till Variant. När Excel använder en variabel av typen Variant så måste den först bestämma vilken datatyp det egentligen är innan någon exekvering sker. Detta kan bl.a. göra att skripten blir långsammare. Man kan dimensionera variabler av ovan nämnda typer i VBA.

Skriver man in ett värde i en cell i Excel så "gissar"(bestämmer) Excel vilken typ värdet är. (inte-lligent...) Detta gör den m.h.a. formatet på det man skriver in... och p.g.a. detta upplever du de resultat du fick från funktionen TypeName...



Sen gällande decimaltal...
Matematiska definitionen på decimaltal är ett tal som innehåller ett decimaltecken, följt av en eller flera decimaler. Du blandar ihop det med det decimala talsystemet vilket är "out of context" i detta fall...


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 615
27 953
271 709
404
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies