Avatar billede staal84 Nybegynder
22. december 2007 - 13:12 Der er 34 kommentarer og
1 løsning

Sammenkædet tekst skal laves om til en formel. EVALUATE?

Jeg har samlet noget statisk tekst og noget dynamisk tekst (resultat af andre formler) i en celle, så det skrevne udstyk af denne celle, danner en ny formel.

Jeg skal så have gjort denne tekst til en faktisk formel. Hvordan?

I tilfælde af at jeg er den eneste, der forstår, hvad jeg mener med ovenstående, vil jeg prøve at demonstrere det:

Jeg har nedenstående formel, som samler statisk og dynamisk tekst.
="=SUMPRODUKT(("&Lister!Y16&"Dato=Lister!$B$2)*("&Lister!Y16&"Pers=A1))"

1. Lister!Y16 viser de første 3 bogstaver i indeværende måned.
2. Jeg har nogle navngivne områder (indsæt - navn - definer), et for hver måned: DecDato, JanDato osv.
3. Lister!$B$2 viser dags dato
Så første betingelse i formlen tjekker om registreringerne i denne måned indeholder dags dato.
4. Ligesom med DecDato har jeg et navngivet område med personer registreret i en den pågældende måned: DecPers, JanPers osv.
5. I A1 står der et navn.
Så anden betingelse i formlen tjekker om personen i A1 er registreret i området for denne måned.

Hvis jeg indsætter det viste udtryk:
=SUMPRODUKT((DecDato=Lister!$B$2)*(DecPers=A2))
i en anden celle (makro), så viser den stadigvæk bare formlen. Jeg skal ind og redigere cellen, før end den opfører sig som en formel. (Når det så er gjort, så virker formelen faktisk...)

Er der et udtryk a la EVALUATE(Udtryk), som kan gøre min formel til en formel?

På forhånd tak.
Avatar billede excelent Ekspert
22. december 2007 - 19:50 #1
hvad har du før = i formlen ?

="=SUMPRODUKT(("&Lister!Y16&"Dato=Lister!$B$2)*("&Lister!Y16&"Pers=A1))"
Avatar billede staal84 Nybegynder
22. december 2007 - 20:50 #2
Ikke forstået... formlen som samler den nye formel er som den står:
="=SUMPRODUKT(("&Lister!Y16&"Dato=Lister!$B$2)*("&Lister!Y16&"Pers=A1))"

den nye formel indsætter jeg ved hjælp af vba ved at sætte de to celler lig hinanden - og så står der ikke noget foran =! dvs. at når jeg står i cellen og trykker F2 Enter, så virker den.
Avatar billede excelent Ekspert
22. december 2007 - 20:54 #3
jo men der må da være en celle angivelse hvor den skal placeres
Avatar billede staal84 Nybegynder
22. december 2007 - 21:02 #4
="=SUMPRODUKT(("&Lister!Y16&"Dato=Lister!$B$2)*("&Lister!Y16&"Pers=A1))" står i celle B21.

Den nye formel indsætter jeg i celle B1, med denne:

Sheets("Hvem er registreret idag").Range("b1").Value = Range("b21")

Er der noget galt med den?
Avatar billede excelent Ekspert
22. december 2007 - 21:15 #5
prøv:

Sheets("Hvem er registreret idag").Range("b1").Formula = Range("b21")
Avatar billede staal84 Nybegynder
22. december 2007 - 21:20 #6
Det tænkte jeg også, da du spurgte til den. Det gjorde ingen forskel.
Derimod giver denne :

Sheets("Hvem er registreret idag").Range("b1").Value = Range("b21").value
#NAVN?

Sheets("Hvem er registreret idag").Range("b1").Value = Range("b21").formula
giver: ="=SUMPRODUKT(("&Lister!Y16&"Dato=Lister!$B$2)*("&Lister!Y16&"Pers=A1))"

Tænker nu om jeg kan substringe de to første væk i "formula"-versionen og om det overhovedet vil gøre nogen forskel...?
Avatar billede staal84 Nybegynder
22. december 2007 - 21:45 #7
Nej nej, formula udgaven har jo &Lister!Y16& i sig, og det var det jeg ikke kunne få til at virke til at starte med...
Avatar billede excelent Ekspert
22. december 2007 - 21:47 #8
prøv :

Sheets("Hvem er registreret idag").Range("b1").Value = Mid([b21].Text, 2, Len([b21].Text) - 2)
Avatar billede staal84 Nybegynder
22. december 2007 - 21:52 #9
Det giver:
SUMPRODUKT((JanDato=Lister!$B$2)*(JanPers=A1) uden =.
Avatar billede excelent Ekspert
22. december 2007 - 21:54 #10
så prøv denne
Sheets("Hvem er registreret idag").Range("b1").Value = "=" & Mid([b21].Text, 2, Len([b21].Text) - 2)
Avatar billede staal84 Nybegynder
22. december 2007 - 21:58 #11
Run-time error '1004':

Application-defined or object-defined error
Avatar billede excelent Ekspert
22. december 2007 - 22:00 #12
er du sikker på at b21 ikke starter med "=
ellers indsæt b21 værdi her
Avatar billede staal84 Nybegynder
22. december 2007 - 22:00 #13
Legede selv med tanken...og endte med denne:

Sheets("Hvem er registreret idag").Range("b1").Value = "=" & Mid(Range("b21").Value, 2, Len(Range("b21").Value))

Hvilket igen giver mig #NAVN?
Avatar billede excelent Ekspert
22. december 2007 - 22:04 #14
formlen med mid() fjerner første og sidste tegn i strengen i b21
det skulle jo gerne være 2 "
prøv lige at indsætte b21's værdi her
Avatar billede staal84 Nybegynder
22. december 2007 - 22:07 #15
Det er rent copy-paste jeg gav dig tidligere i kommentar 4, så ... Hvad mener du med at indsætte b21 værdi her? Mener du nedenstående?

Sheets("Hvem er registreret idag").Range("b1").Value = "=" & [b21].Value

det giver samme run-time error:
Run-time error '1004':

Application-defined or object-defined error
Avatar billede staal84 Nybegynder
22. december 2007 - 22:08 #16
Mid - er 2-tallet ikke start positionen, så den starter i position 2 og tager til slut pga. LEN???
Avatar billede staal84 Nybegynder
22. december 2007 - 22:10 #17
b21.value indeholder allerede et =-tegn. Hvis jeg fjerner det, kan jeg køre makroen, men står så igen tilbage med #NAVN?
Avatar billede excelent Ekspert
22. december 2007 - 22:11 #18
ja 2 betyder startpos 2 og len(b21)= antal tegn i b21 -2 så skulle sidste tegn blive sorteret fra
Avatar billede excelent Ekspert
22. december 2007 - 22:11 #19
b21's værdi ???????????????+
Avatar billede staal84 Nybegynder
22. december 2007 - 22:11 #20
Så min B21 er lig med: ="SUMPRODUKT(("&Lister!Y16&"Dato=Lister!$B$2)*("&Lister!Y16&"Pers=A1))"
Avatar billede staal84 Nybegynder
22. december 2007 - 22:14 #21
Jeg tror, jeg begynder at forstå, hvad du mener med B21's værdi:

=SUMPRODUKT((JanDato=Lister!$B$2)*(JanPers=A1))

rigtigt?
Avatar billede excelent Ekspert
22. december 2007 - 22:22 #22
ok nu har jeg testet med b21's værdi og denne skal virke

Sheets("Hvem er registreret idag").Range("b1").Value = "=" & [b21].text

hvis du far fejlen #NAVN så er det argumenterne i formlen der fejler
Avatar billede excelent Ekspert
22. december 2007 - 22:26 #23
tyder på de navngivne områder
Avatar billede staal84 Nybegynder
22. december 2007 - 22:28 #24
Det gør jeg. Formelen er som den skal være, men jeg får stadig #NAVN?

Det må jo så være noget andet i mit ark som fu..er det op.

Jeg har et område der også bare hedder Dato, måske det er det....
Avatar billede staal84 Nybegynder
22. december 2007 - 22:29 #25
Har fjernet "Dato" fra navne, men får samme fejl..
Avatar billede excelent Ekspert
22. december 2007 - 22:29 #26
har lige lavet 2 navngivne områder : JANDato og JANPers
så forsvinder "NAVN fejlen og erstattes af 0
Avatar billede excelent Ekspert
22. december 2007 - 22:31 #27
prøv i stedet at anvende cellereferencen som de 2 områder refererer til
Avatar billede staal84 Nybegynder
22. december 2007 - 22:35 #28
Min JanDato hedder =Jan!$D$2:$D$19
Min JanPers hedder =Jan!$B$2:$B$19

Ok - jeg prøver. Jeg har bare en anden makro som opdatere disse referencer, for at en anden formel ikke skal lede i et større område end højest nødvendigt.
Avatar billede excelent Ekspert
22. december 2007 - 22:37 #29
ved ikke om JANDato og JanDato opfattes ens af excel !!!
prøv lige at teste for det også
Avatar billede staal84 Nybegynder
22. december 2007 - 22:38 #30
Ændrede formlen til:
="SUMPRODUKT((Jan!$D$2:$D$19=Lister!$B$2)*(Jan!$B$2:$B$19=A1))"

Men det gav samme fejl. Så tror ikke Jan og JAN ændre noget.
Avatar billede staal84 Nybegynder
22. december 2007 - 22:43 #31
Jan og JAN gav det samme... Beklager men jeg er nødt til at give op for idag. Takker mange gange for brainstormen og tålmodigheden.
Avatar billede excelent Ekspert
22. december 2007 - 22:49 #32
ok vi prøver igen i morgen
Avatar billede excelent Ekspert
22. december 2007 - 23:14 #33
Så tror jeg vi har en løsning
enten skal b21 indeholde SUMPRODUCT (Engelsk) ellers anvend som her FormulaLocal

Sheets("Hvem er registreret idag").Range("b1").FormulaLocal = "=" & [b21].Value
Avatar billede staal84 Nybegynder
23. december 2007 - 14:38 #34
Det er så smukt så smukt.
FormulaLocal og excelent hyldes herfra. Smid dit svar og modtag de mere end velfortjente 30point.
Avatar billede excelent Ekspert
23. december 2007 - 14:51 #35
ok tak :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester