Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketBetinget udtræk af tekst

 Besvar Besvar
Forfatter
Skemalægger Se dropdown
Bronze bruger
Bronze bruger


Medlem: 27.Okt.2013
Land: Danmark
Status: Offline
Point: 92
Direkte link til dette indlæg Emne: Betinget udtræk af tekst
    Sendt: 27.Okt.2013 kl. 14:11
AndersBjarne.       Carl.     Dennis.                  Opg1.                    Opg2.                   Opg3.
Opg1.            Opg2.        Opg1. Opg3.                    Anders, carl.          Bjarne.                  Dennis


Jeg har medarbejdere stående i kolonner, hver række med dagens arbejdsopgave. Til højre opgavekolonner med liste over, hvem der har hvilke opgaver den dag. Vekslende 1 eller flere på hver opgave pr dag.

Jeg for hver opgavekolonne lavet en sammenkædning af HVIS(opg for medarbejder n=opg m;medarbejder n;", ") for hver medarbejder.
Det bliver et ret langt udtryk med 30 medarbejdere i 10 uger ....

Jeg kan tænke, det var nemt at lave i Basic med en for-next løkke, og måske også derfor i VBA, men findes der en smartere måde at gøre det med formler alene end min lange sammenkædning ?            

Ps ... Jeg kan ikke få tab til at virke, så spørgsmålet står lidt rodet ... Håber, meningen fremgår
Til top



Til top
Skemalægger Se dropdown
Bronze bruger
Bronze bruger


Medlem: 27.Okt.2013
Land: Danmark
Status: Offline
Point: 92
Direkte link til dette indlæg Sendt: 28.Okt.2013 kl. 21:44
For at præcisere:

Her er udtrykket for de første 13 personer. For første person gælder:
$L$2 er medarbejdernavnet (kolonneoverskrift), $L33=opgave for medarbejder i kolonne L på dag 31 , AB$2 er opgavenavn (kolonneoverskrift)


=SAMMENKÆDNING((HVIS($L33=AB$2;$L$2&"  ";));(HVIS($M33=AB$2;$M$2&"  ";));(HVIS($N33=AB$2;$N$2&"  ";));(HVIS($O33=AB$2;$O$2&"  ";));(HVIS($P33=AB$2;$P$2&"  ";));(HVIS($Q33=AB$2;$Q$2&"  ";));(HVIS($R33=AB$2;$R$2&"  ";));(HVIS($S33=AB$2;$S$2&"  ";));(HVIS($T33=AB$2;$T$2&"  ";));(HVIS($U33=AB$2;$U$2&"  ";));(HVIS($V33=AB$2;$V$2&"  ";));(HVIS($W33=AB$2;$W$2&"  ";));(HVIS($X33=AB$2;$X$2&"  ";)))




Allan.....Børge.....Carl......Dennis.        Opg1...........Opg2..........Opg3

Opg1      Opg2      Opg1      Opg3           Allan, Carl    Børge         Dennis
Opg2      Opg2      Opg3      Opg1           Dennis         Allan, Børge  Carl



Det må da kunne rationaliseres ?
Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 29.Okt.2013 kl. 20:33
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
Skemalægger Se dropdown
Bronze bruger
Bronze bruger


Medlem: 27.Okt.2013
Land: Danmark
Status: Offline
Point: 92
Direkte link til dette indlæg Sendt: 30.Okt.2013 kl. 22:08
Nydeligt - Og umiddelbart synes det noget mere elegant end min løsning - når vi nu skal bruge VBA Smile
Da mange af mine kolleger ikke "tillader" makroer, ville jeg gerne have en ren excel løsning, men jeg må lære dem at ændre sikkerhedsniveauet.

 (J(n) er job-kolonner)

Sub opgaver()
'
' opgaver Makro
' Makro indspillet 29-10-2013 af 
'


ThisWorkbook.Worksheets("jobst").Range("a1").Activate

    Dim x As Integer
    Dim y As Integer
    Dim j As Integer
    
    Dim sStr As String

    For j = 10 To 14
    For y = 2 To 7
    sStr = ""
    For x = 1 To 9
        If Cells(y, x) = Cells(1, j) Then
            sStr = sStr + Cells(1, x) + ", "
        End If
    Next x
    Cells(y, j) = sStr
    Next y
    Next j
End Sub

Når jeg nu gerne vil have det til at køre automatisk, så det opdaterer, hver gang jeg ændrer på grunddata, er det så sådan her:


Sub auto_open()
    Worksheets("jobst").OnEntry = "opgaver"
End Sub

Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 02.Nov.2013 kl. 08:51
Ved ikke om vi kom i mål her ?
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
Skemalægger Se dropdown
Bronze bruger
Bronze bruger


Medlem: 27.Okt.2013
Land: Danmark
Status: Offline
Point: 92
Direkte link til dette indlæg Sendt: 16.Nov.2013 kl. 19:48
Undskyld den lange svartid. Sidder nu og prøver at gennemgå din kode og er nødt til at spørge banalt:

Som jeg ser det, har du lavet en brugerdefineret funktion, der inkluderer en parameteroverførsel (rng og opg). Jeg kan finde den under VBA men ikke som en makro. Vil det sige, det reelt er en ny Excel kommando - som kun gælder i den her workbook ? Kan den gøres generel, så jeg kan genbruge den i andre ?
Det synes jo en del smartere end min løsning med en makro, der bliver aktiveret - og gennemkørt i hele arket, hver gang noget indtastes. Det her må være en del hurtigere.
Hvis jeg sender arket til andre, skal de så have makroer aktiveret for at det kan virke ?

Du skrev:

Function xTest(rng As Range, opg As Range)
  For Each c In rng
     If c = opg Then navne = navne & Cells(1, c.Column) & " /"
  Next
  If navne <> "" Then xTest = Left(navne, Len(navne) - 1) Else xTest = ""
End Function

Jeg forstår ikke helt den her linie

 If c = opg Then navne = navne & Cells(1, c.Column) & " /"

"navne" er ikke defineret - kan man blot indføre den ?
 og i funktionen Cells:

c.Column ?

- Men det virker fint :0)
Til top
Skemalægger Se dropdown
Bronze bruger
Bronze bruger


Medlem: 27.Okt.2013
Land: Danmark
Status: Offline
Point: 92
Direkte link til dette indlæg Sendt: 16.Nov.2013 kl. 21:48
Citat: Skemalægger Skemalægger skrev:



- Men det virker fint :0)

Og dog ....  kan jeg ikke forstå, at navnene sommetider forsvinder, og der står kun skråstreger tilbage ! 
Så må jeg op og genindtaste formlen for at få navnene frem igen. Det hjælper ikke at trykke "opdater alle" eller "beregn"...

Forslag ?
Til top
Skemalægger Se dropdown
Bronze bruger
Bronze bruger


Medlem: 27.Okt.2013
Land: Danmark
Status: Offline
Point: 92
Direkte link til dette indlæg Sendt: 17.Nov.2013 kl. 12:52
Det her synes at fungere i mit ark - forstår dog stadig ikke "c.Column", men vil gerne tilføje en funktion med betinget formattering afhængigt af antal medarbejdere til opgaven i forhold til behov. 
Kolonnerne med antal medarbejder på opgaven hhv behov kan stå enten inde i oversigten over medarbejdere eller i et dataområde for sig
Der er 4 muligheder: 
Behov-antal: 0       Blank baggrund
Behov-antal: > 0    Grøn
Behov-antal <0      Rød
Behov = 0              Grå





I kolonnen  


Function job(rng As Range, opg As Range)
For Each c In rng
If UCase(c) = UCase(opg) Then navne = navne & Cells(5, c.Column) & ", "


Next
If navne <> "" Then job = Left(navne, Len(navne) - 1) Else job = ""
End Function
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2025 Dansk Regneark Forum - en del af Excel-regneark.dk