PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerExcelExcelFörskjutningFörskjutning
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2022-10-25 09:09
 
Hejsan.
 
Behöver hjälp med ett problem. Låt säga att står i cell F1 och jag vill hämta indata från celler C1:C15, men det är inte alltid samma celler. Det finns även indata i D1:D15. Om jag då i cell F1 skriver följande =C3+C7+C8. Nästa gång är det kanske =C1+C5+C6+C8. Hur går jag vidare om jag vill förskjuta min indata ett steg åt höger. I cell G1 vill jag nu ha en automatiskt operation med =D3+D7+D8. 
 
Har provat med formler som förskjutning och formeltext utan framgång. Testade även med ett makro i själva bladet som skulle lösa det automatiskt, men jag fick det inte att fungera. Jag vill helst inte ha något makro i bladet som körs.
Nytt inlägg
 2022-10-25 12:49
 

=SUMMA(INDEX(D:D;DELATEXT(BYT.UT(BYT.UT(FORMELTEXT($A$1);"=";"");"C";"");;"+")*1))

Kopiera åt höger eller ersätt D:D med lämplig kolumn

Man tar helt enkelt fram alla radnummer som används i formeln i cell A1. Det gör man genom att genom att säda bort "=" och "C" varefter man splittar textsträngen vid varje "+". Sen använder man INDEX för att hämta de raderna från vald kolumn

 

Det som borde funka men inte gör det:

det här ger ju formeltexten utan inledande =

=BYT.UT(FORMELTEXT(A1);"=";"")

Och det här ger (text)adressen till varje cell:

=DELATEXT(BYT.UT(FORMELTEXT(A1);"=";"");;"+")

Man kan ju (i sin enfald) tro att det bara är att köra indirekt på det där och få ut området som en matris

=INDIREKT(DELATEXT(BYT.UT(FORMELTEXT(A1);"=";"");;"+"))

 

Problemet är att man kan använda INDIREKT för att översätta en text som beskriver ett sammanhängande område. Dvs det här funkar (obs citattecknen "", det är en text som matats in)

=INDIREKT("C1:C3")

Men det går inte att skriva ojämna områden i stil med:

=INDIREKT("C1;C3")

Så, det får bli formeln i rad1. Extremt oflexibelt. Men jag får inte INDIREKT att funka som jag vill.

Nytt inlägg
 2022-10-25 23:06
 
 Ändrad av ex16  på 2022-10-25 23:10:03

Jag får ett felmeddelande på formeln i rad 1. #NAMN, Fel: Ogiltigt namn. Det verkar vara DELATEXT som är problemet.

Jag får ett felmeddelande på denna formel också. =DELATEXT(BYT.UT(FORMELTEXT(A1);"=";"");;"+")

Jag har Excel Office 2019 om man kan byta ut något?

 

Nytt inlägg
 2022-10-26 10:01
 
 Ändrad av anonymous  på 2022-10-26 10:17:24

Jag fick DELATEXT  ganska nyss (365). Men 2019 skall stödja:

support.microsoft.com/sv-se/office/de...

Måste du köra en uppdatering kanske?

Om man inte får använda DELATEXT så är det väldigt osmidigt att plocka ut siffrorna. Och då blir INDEX-metoden bara jobbig

Du skulle eventuellt kunna använda EVALUATE() på något smart sätt. Men då måste du tillåta excel 4 makron (sänka säkerheten), lista ut vad tusan evalutate hette på svenska OCH skapa ett antal steg med namngivna formler.

 

För att Hitta radnummren utan delatext()-delen måse du förmodligen göra någonting i stil med

=EXTEXT(FORMELTEXT($A$1);1+SÖK("€";BYT.UT(FORMELTEXT($A$1);"C";"€";SEKVENS(LÄNGD(FORMELTEXT($A$1))-LÄNGD(BYT.UT(FORMELTEXT(A1);"C";"")))));1)*1

Och vill du ha med tvåsiffriga radnummer måste du krångla till det ännu mer. Typ:

=BYT.UT(EXTEXT(FORMELTEXT($A$1);1+SÖK("€";BYT.UT(FORMELTEXT($A$1);"C";"€";SEKVENS(LÄNGD(FORMELTEXT($A$1))-LÄNGD(BYT.UT(FORMELTEXT($A$1);"C";"")))));2);"+";"")*1

sen skall det in i INDEX-formeln på lämpligt sätt

=SUMMA(INDEX(D$1:D$15;BYT.UT(EXTEXT(FORMELTEXT($A$1);1+SÖK("€";BYT.UT(FORMELTEXT($A$1);"C";"€";SEKVENS(LÄNGD(FORMELTEXT($A$1))-LÄNGD(BYT.UT(FORMELTEXT($A$1);"C";"")))));2);"+";"")*1))

Lycka till om du vill söka ett fel i den formeln...

******ED*****

Vid närmare eftertanke är "Sekvens()" halvnytt också. Det är inte säkert att det funkar ändå. Tar man bort SEKVENS så blir det:

=SUMMA(INDEX(D$1:D$15;BYT.UT(EXTEXT(FORMELTEXT($A$1);1+SÖK("€";BYT.UT(FORMELTEXT($A$1);"C";"€";RAD(INDIREKT("1:"&LÄNGD(FORMELTEXT($A$1))-LÄNGD(BYT.UT(FORMELTEXT($A$1);"C";""))))));2);"+";"")*1))

Hmm. formeltext är också halvny. Men där går gränsen

Nytt inlägg
 2022-10-27 09:43
 
 Ändrad av ex16  på 2022-10-27 09:43:38

Det går inte att använda själva formeln =DELATEXT. Länken leder vidare till Omvandla text till kolumner om man väljer Data i menyn. Klickar man vidare finns dessa formler VÄNSTER, MITT, HÖGER, SÖK och LÄNGD. SEKVENS finns inte heller. 

Om jag har följande värde i dessa celler. C1;1, C2;2, C3;3, D1;5, D2;10, D3;15. Om jag i cell A1 skriver följande indata: C1+C2+C3 vilket skulle ge värdet 6. Då vill jag i B1 ha värdet 30 som då skulle motsvara D1+D2+D3.
 
Den enda formel jag kunde gå vidare med av dom du angav var
=SUMMA(INDEX(D$1:D$15;BYT.UT(EXTEXT(FORMELTEXT($A$1);1+SÖK("D";BYT.UT(FORMELTEXT($A$1);"C";"D";RAD(INDIREKT("1:"&LÄNGD(FORMELTEXT($A$1))-LÄNGD(BYT.UT(FORMELTEXT($A$1);"C";""))))));2);"+";"")*1)) 
och den ger värdet 5 vilket motsvarar enbart D1. Om det går att göra något mer? 
 
Nytt inlägg
 2022-10-27 15:04
 

Vad händer om du skriver in

=RAD(INDIREKT("1:"&LÄNGD(FORMELTEXT($A$1))-LÄNGD(BYT.UT(FORMELTEXT($A$1);"C";""))))

blir det 3 celler eller ligger resultatet i en cell?

Om det bara blir en cell så kan du testa att ändra början av formeln: 

=SUMMA(
till
=PRODUKTSUMMA(

=PRODUKTSUMMA(INDEX(D$1:D$15;BYT.UT(EXTEXT(FORMELTEXT($A$1);1+SÖK("€";BYT.UT(FORMELTEXT($A$1);"C";"€";RAD(INDIREKT("1:"&LÄNGD(FORMELTEXT($A$1))-LÄNGD(BYT.UT(FORMELTEXT($A$1);"C";""))))));2);"+";"")*1))

Eller ställ dig i cellen och tryck Ctrl+Shift+enter för att göra om formeln till en matrisformel

 

Annars får du acceptera att din excel är för gammal för att hantera problemet snyggt.

Nytt inlägg
 2022-10-28 11:32
 

 Hej hej

Vad är det som gör att du inte bara kan skriva =summa(C1:C15) utan istället måste addera specifika celler som skiftar? Finns det i så fall någon logik för detta så att du istället kan kika på den logiken istället för att behöva modifiera en formel med förkjutning,

/c

Nytt inlägg
 2022-10-30 10:25
 

Tack anonymous för all hjälp. Dessvärre har jag inte fått rätsida på det än, men jag tar givetvis med mig ny lärdom. 

 
Hej Christian
I Både C1:C15 och D1:D15 anges olika sannolikheter som ska jämföras med varandra. Det är inte alltid samma celler som ska summeras i C1:C15, däremot är de alltid linjära mot D-kolumnen. 
 
Detta är exakt vad jag behöver från ett makro. Värdena hämtas då fån C1:C15 och sju andra liknande kolumner. 
Range("F40:F47").Select
Selection.AutoFill Destination:=Range("F40:G47"), Type:=xlFillDefault
 
Vid närmare eftertanke har jag kommit fram till att det är nog bättre att använda sig av ett makro med en inputbox för C-kolumnen och andra kolumner och sen autofylla med kolumnen bredvid. 
Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerExcelExcelFörskjutningFörskjutning

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter