Permalänk
Medlem

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!

Permalänk
Medlem

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

Visa signatur

Server: Fractal design Define 7 XL | AMD Ryzen 7 5800X 8/16 | ASUS ROG CROSSHAIR VIII DARK HERO | 64GB Corsair @ 3000MHz | ASUS Radeon RX 460 2GB | Samsung 960 PRO 512 GB M.2 | 2x 2TB Samsung 850 PRO SSD | 6x Seagate Ironwolf Pro 10TB
WS: Phantex Entoo Elite | AMD Ryzen Threadripper 1950X 16/32 | ASUS Zenith extreme | 128GB G.Skill @ 2400MHz | ASUS Radeon HD7970 | 3x 2TB Samsung 960PRO M.2 | 6x Seagate Ironwolf Pro 10 TB
NEC PA301W 30" @ 2560x1600 | Linux Mint 21.3 Cinnamon

Permalänk
Medlem

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)

Visa signatur

"Resistance is futile."

- Georg Ohm

Permalänk
Medlem

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.

Visa signatur

Solen i africa! Hjälp snabbt. Tävling i klassen!
Det var High noon.
Om solen i Africa en truckförare kommer från East till Weast på huvudvägen. och exact vid eqvatorn vid Africa. Landskapet är totalt slät. På en tidpunkt var solen så ett par telestolpar gjorde så att det blev skugga.
3 gissar jag på, men kan inte förklara?

Permalänk
Medlem
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

Permalänk
Medlem
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

Permalänk
Medlem
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

Permalänk
Hedersmedlem

@M911

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

Mvh
Überklass
Moderator

Visa signatur

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

Permalänk
Medlem
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

Permalänk
Medlem
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

Visa signatur

Solen i africa! Hjälp snabbt. Tävling i klassen!
Det var High noon.
Om solen i Africa en truckförare kommer från East till Weast på huvudvägen. och exact vid eqvatorn vid Africa. Landskapet är totalt slät. På en tidpunkt var solen så ett par telestolpar gjorde så att det blev skugga.
3 gissar jag på, men kan inte förklara?

Permalänk
Medlem
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!