Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2007

Script i Excel

Någon duktig på excel som finns här inne?

Jag har inga kunskaper om excel förutom det mesta basic som alla kan. Men jag skulle behöva hjälp med lite saker och vänder mig till expertpanelen här inne!

1. Jag har ett dokument där en uträkning visar %. Jag tänker att jag skulle vilja tydliggöra summan och om summan är under 6% så skall siffran visas i röd färg, är den mellan 6-8% så visar den gul färg och över 8% grön färg. Hur löser jag detta?
Det skall även vara möjligt med intervall, t.ex. 0-5% = röd färg, 5-8% = grön färg, 8-100% = röd färg.

2. Går det att importera specifika celler från webplatser in i Excel? Jag vet att det via data / "Från web" går att importera hela tabeller, men om jag bara vill ha en siffra från en websida, låt säga aktuell aktiekurs, går det att importera denna då i mitt ark? Hur löser jag så att alla celler är uppdaterade? Går det att uppdatera hela Excel eller måste jag uppdatera varje cell manuellt?

Stort tack för hjälpen!

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Apr 2013

Du ska använda funktionen villkorsstyd formatering. Kommer inte ihåg viken meny den finns i. Men den gör att du kan sätta vissa kriterier på en cell så den agerar efter ett visst värde eller intervall.

Läs även detta från M$ support

Windows is not doing our work seriously
——————————————————————
AMD FX 8150 | ASUS Sabertooth 990FX | 32 GB RAM | ASUS radeon 7970 @ 1 GHz
9 000 GiB i media | NEC PA301W @ 2560x1600 | Kör linux os

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Maj 2008

använd dig utav VBA när du håller på med office programmen, det kommer underlätta enormt mycket.

2.
ja du kan göra web queries i excel och spara infon i inviduella celler (så jag gör mitt arbete när jag behöver stora datablad med information)

"Resistance is futile."

- Georg Ohm

Trädvy Permalänk
Medlem
Plats
göteborg
Registrerad
Jun 2003

Vet inte om det finns något enkelt sätt att lösa nr 2.
I google docs kan du få in aktiekurser direkt (t.ex. =GOOGLEFINANCE("GOOG","price",TODAY()-30,TODAY()) ) - så laddar den in senaste 30 dagarna.

men du efterfrågar en lösning i excel.
Första träffen gav detta: http://investexcel.net/google-finance-stock-quotes-in-excel/

Om du förstår dig på VBA så kan du anpassa den här koden att göra precis det du vill.

Option Explicit Sub GetData() Dim DataSheet As Worksheet Dim EndDate As Date Dim StartDate As Date Dim Symbol As String Dim qurl As String Dim nQuery As Name Dim LastRow As Integer Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual Sheets("Data").Cells.Clear Set DataSheet = ActiveSheet StartDate = DataSheet.Range("startDate").Value EndDate = DataSheet.Range("endDate").Value Symbol = DataSheet.Range("ticker").Value Sheets("Data").Range("a1").CurrentRegion.ClearContents qurl = "http://finance.google.com/finance/historical?q=" & Symbol qurl = qurl & "&startdate=" & MonthName(Month(StartDate), True) & _ "+" & Day(StartDate) & "+" & Year(StartDate) & _ "&enddate=" & MonthName(Month(EndDate), True) & _ "+" & Day(EndDate) & "+" & Year(EndDate) & "&output=csv" QueryQuote: With Sheets("Data").QueryTables.Add(Connection:="URL;" & qurl, Destination:=Sheets("Data").Range("a1")) .BackgroundQuery = True .TablesOnlyFromHTML = False .Refresh BackgroundQuery:=False .SaveData = True End With Sheets("Data").Range("a1").CurrentRegion.TextToColumns Destination:=Sheets("Data").Range("a1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=True, Space:=False, other:=False Sheets("Data").Columns("A:G").ColumnWidth = 12 LastRow = Sheets("Data").UsedRange.Row - 2 + Sheets("Data").UsedRange.Rows.Count Sheets("Data").Sort.SortFields.Add Key:=Range("A2:A" & LastRow), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With Sheets("Data").Sort .SetRange Range("A1:G" & LastRow) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply .SortFields.Clear End With End Sub

Kan nog hjälpa imorgon att göra om funktionen till enklast möjliga.

●/ - Intel® Core™ i5-2500K | ASRock Z68 Pro3-M | 8 GB DDR3 | Corsair FORCE GT 120 GB | 24" HP LP2465 S-PVA
/▌ - Lenovo Thinkpad x200s | Intel® Core™2Duo SL9400 | 12"@1440x900 pixels | 4 GB DDR3 | 1,47kg (med 6-cell)
/ \

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2007
Skrivet av OldComputer:

Du ska använda funktionen villkorsstyd formatering. Kommer inte ihåg viken meny den finns i. Men den gör att du kan sätta vissa kriterier på en cell så den agerar efter ett visst värde eller intervall.

Läs även detta från M$ support

Klockrent!! Detta gav mig exakt rätt svar! Tackar

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2007
Skrivet av glemmy:

Vet inte om det finns något enkelt sätt att lösa nr 2.
I google docs kan du få in aktiekurser direkt (t.ex. =GOOGLEFINANCE("GOOG","price",TODAY()-30,TODAY()) ) - så laddar den in senaste 30 dagarna.

men du efterfrågar en lösning i excel.
Första träffen gav detta: http://investexcel.net/google-finance-stock-quotes-in-excel/

Om du förstår dig på VBA så kan du anpassa den här koden att göra precis det du vill.

Option Explicit Sub GetData() Dim DataSheet As Worksheet Dim EndDate As Date Dim StartDate As Date Dim Symbol As String Dim qurl As String Dim nQuery As Name Dim LastRow As Integer Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual Sheets("Data").Cells.Clear Set DataSheet = ActiveSheet StartDate = DataSheet.Range("startDate").Value EndDate = DataSheet.Range("endDate").Value Symbol = DataSheet.Range("ticker").Value Sheets("Data").Range("a1").CurrentRegion.ClearContents qurl = "http://finance.google.com/finance/historical?q=" & Symbol qurl = qurl & "&startdate=" & MonthName(Month(StartDate), True) & _ "+" & Day(StartDate) & "+" & Year(StartDate) & _ "&enddate=" & MonthName(Month(EndDate), True) & _ "+" & Day(EndDate) & "+" & Year(EndDate) & "&output=csv" QueryQuote: With Sheets("Data").QueryTables.Add(Connection:="URL;" & qurl, Destination:=Sheets("Data").Range("a1")) .BackgroundQuery = True .TablesOnlyFromHTML = False .Refresh BackgroundQuery:=False .SaveData = True End With Sheets("Data").Range("a1").CurrentRegion.TextToColumns Destination:=Sheets("Data").Range("a1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=True, Space:=False, other:=False Sheets("Data").Columns("A:G").ColumnWidth = 12 LastRow = Sheets("Data").UsedRange.Row - 2 + Sheets("Data").UsedRange.Rows.Count Sheets("Data").Sort.SortFields.Add Key:=Range("A2:A" & LastRow), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With Sheets("Data").Sort .SetRange Range("A1:G" & LastRow) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply .SortFields.Clear End With End Sub

Kan nog hjälpa imorgon att göra om funktionen till enklast möjliga.

Sa jag att jag behärskar + - × i excel? Haha det där scriptet såg avancerat ut. Men kopplar jag scriptet externt eller på något sätt till varje cell? Jag är inte bekant med VBA, men ser logiken i språket. (Är ingen hejare på programmering).

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2007
Skrivet av Selmalagerlöf:

använd dig utav VBA när du håller på med office programmen, det kommer underlätta enormt mycket.

2.
ja du kan göra web queries i excel och spara infon i inviduella celler (så jag gör mitt arbete när jag behöver stora datablad med information)

Hur fungerar web queries?

Skickades från m.sweclockers.com

Trädvy Permalänk
Moderator
Plats
Tannhäuser Gate
Registrerad
Sep 2003

@M911

Jag har flyttat din tråd till "Programmering och digitalt skapande" då den passar bättre i den forumsektionen.

Mvh
Überklass
Moderator

|| SWECLOCKERS.COM || uberklass@sweclockers.com ||
|| Självutnämnd Silverstone FT02-riddare ||
|| Silverstone FT02B-WRI "Limited Edition" No. 0743 & 0640 ||
|| Sweclockers officiella FT02-tråd ||

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2007
Skrivet av Überklass:

@M911

Jag har flyttat din tråd till "Programmering och digitalt skapande" då den passar bättre i den forumsektionen.

Mvh
Überklass
Moderator

Ahh tack! Sorry

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Plats
göteborg
Registrerad
Jun 2003
Skrivet av M911:

Sa jag att jag behärskar + - × i excel? Haha det där scriptet såg avancerat ut. Men kopplar jag scriptet externt eller på något sätt till varje cell? Jag är inte bekant med VBA, men ser logiken i språket. (Är ingen hejare på programmering).

Skickades från m.sweclockers.com

Du måste tillåta makron i din excelversion. Det gör du i excel options/inställningar (du hittar den genom att trycka på den runda knappen längst upp till vänster) -> trust center -> trust center settings -> Enable all macros.
Sedan är det smidigt att ta fram Developer-fliken, det gör du i excel options/inställningar -> Popular -> kryssa i "Show developer tab in the Ribbon".

Vet inte om du har svensk eller engelsk.

Du kan ladda ner filen i min länk, öppna den, gå till Developer-flicken och där trycka Visual Basic.
Då får du tillgång till all kod.

Kort och enkelt förklarat funkar den såhär:

Dim DataSheet As Worksheet Dim EndDate As Date Dim StartDate As Date Dim Symbol As String Dim qurl As String Dim nQuery As Name Dim LastRow As Integer Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual

Här definieras några variabler, textsträngar osv. som kommer användas senare. Några "inställningar" sätts också.

Sheets("Data").Cells.Clear Set DataSheet = ActiveSheet StartDate = DataSheet.Range("startDate").Value EndDate = DataSheet.Range("endDate").Value Symbol = DataSheet.Range("ticker").Value Sheets("Data").Range("a1").CurrentRegion.ClearContents

Först töms arket "Data" (det är dit den hämtar informationen).
Sedan lagrar den det som finns i de olika cellerna i variablerna som skapades tidigare. Exempelvis "startDate" är en namngiven "range".
Du namnger i fliken Formulas och Name Manager.

qurl = "http://finance.google.com/finance/historical?q=" & Symbol qurl = qurl & "&startdate=" & MonthName(Month(StartDate), True) & _ "+" & Day(StartDate) & "+" & Year(StartDate) & _ "&enddate=" & MonthName(Month(EndDate), True) & _ "+" & Day(EndDate) & "+" & Year(EndDate) & "&output=csv"

Här byggs adressen "url" upp till google finance. Om jag vill visa google-aktien 10 dagar tillbaka till idag så kommer adressen se ut såhär:

"http://finance.google.com/finance/historical?q=GOOG&startdate..."

Det sista tillägget "output=csv" talar om att data ska komma som "comma separated values", det är en formatering (eller vad man ska säga) där varje kolumn separeras med semikolon eller annat specialtecken.

QueryQuote: With Sheets("Data").QueryTables.Add(Connection:="URL;" & qurl, Destination:=Sheets("Data").Range("a1")) .BackgroundQuery = True .TablesOnlyFromHTML = False .Refresh BackgroundQuery:=False .SaveData = True End With

Sedan kör den hela grejen, QueryTables.Add med din url, platsen den ska lägga QueryTables, inställningar.

Det som kommer ut nu är en rådata från google finance, i csv-format.
Ser ut såhär:

Date,Open,High,Low,Close,Volume
12-Feb-16,690.26,693.75,678.60,682.40,2141373
11-Feb-16,675.00,689.35,668.87,683.11,3007223
10-Feb-16,686.86,701.31,682.13,684.12,2627379
9-Feb-16,672.32,699.90,668.77,678.11,3604335
8-Feb-16,667.85,684.03,663.06,682.74,4212541
5-Feb-16,703.87,703.99,680.15,683.57,5069985
4-Feb-16,722.81,727.00,701.86,708.01,5145855
3-Feb-16,770.22,774.50,720.50,726.95,6162333
2-Feb-16,784.50,789.87,764.65,764.65,6332431
1-Feb-16,750.46,757.86,743.27,752.00,4801816
29-Jan-16,731.53,744.99,726.80,742.95,3394935
28-Jan-16,722.22,733.69,712.35,730.96,2658016
27-Jan-16,713.67,718.24,694.39,699.99,2139970
26-Jan-16,713.85,718.28,706.48,713.04,1324300

Dold text

Det nästa funktion gör är att dela upp de komma-separerade värdena till egna kolumner.
Sheets("Data").Range("a1").CurrentRegion.TextToColumns.....

Sheets("Data").Columns("A:G").ColumnWidth = 12 LastRow = Sheets("Data").UsedRange.Row - 2 + Sheets("Data").UsedRange.Rows.Count Sheets("Data").Sort.SortFields.Add Key:=Range("A2:A" & LastRow), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With Sheets("Data").Sort .SetRange Range("A1:G" & LastRow) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply .SortFields.Clear End With

Den sista funktionen ändrar bredd på kolumnerna och sedan sorteras det i stigande datumordning (från CSV-filen kommer det i sjunkande).

Du bör ha alla pusselbitar för att bygga något själv.
Fråga om det är något oklart

●/ - Intel® Core™ i5-2500K | ASRock Z68 Pro3-M | 8 GB DDR3 | Corsair FORCE GT 120 GB | 24" HP LP2465 S-PVA
/▌ - Lenovo Thinkpad x200s | Intel® Core™2Duo SL9400 | 12"@1440x900 pixels | 4 GB DDR3 | 1,47kg (med 6-cell)
/ \

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2007
Skrivet av glemmy:

Du bör ha alla pusselbitar för att bygga något själv.
Fråga om det är något oklart

Fantastiskt! Vilken klippa du är!! Stort tack för hjälpen och förklaringarna!

...nu har du gett mig jobb för iaf resten av året med att få detta att fungera!