• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Opgelost Gebied tussen twee loodlijnen arceren

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

LindaCarlien

Gebruiker
Lid geworden
9 aug 2024
Berichten
11
Hoi allemaal,

Voor een presentatie wil ik een gebied tussen twee loodlijnen arceren. Ik ben nu aan het kloten geweest met paint, werkt opzich wel.. Maar als excel het zelf kan doen is het natuurlijk veel strakker en mooier. Vooral als die presentatie op posterformaat geprint moet gaan worden. Ik heb een excelbestand als voorbeeld bij gevoegd. Ik hoop dat jullie snappen wat ik bedoel en dat jullie me kunnen helpen!
 

Bijlagen

Misschien heb je iets aan deze tutorial, ik gok dat je iets soortgelijks zoekt...

Om deze inhoud te bekijken, hebben we jouw toestemming nodig om cookies van derden te gebruiken.
Voor meer gedetailleerde informatie, zie onze cookiespagina.
 
Beste Alex,

Bedankt! Dit komt in de buurt inderdaad.. maar ik wil niet het hele gebied tussen de lijnen maar echt alleen tussen 2 loodlijnen..
 
Kun je een bestand plaatsen met de (fake) data in het werkblad?
 
22 lijntjes met bijna dezelfde kleuren die zo dicht bij elkaar liggen.
En dan ook nog een Y-as met zoveel getallen.

Dat kan naar mijn mening nooit een duidelijk presentatie opleveren.
 
Laatst bewerkt:
Hoewel de kolommen gecentreerd staan en dus de loodlijnen niet exact door de punten lopen alvast een poging
 

Bijlagen

@ E v R
Als we het vergelijken met de afbeelding die Linda zelf in het bestand had toegevoegd is het zeker een verdienstelijke poging maar blijft helaas nog een eindje verwijderd van de bedoeling.

@ allen
Wanneer ik uitspraken doe als "voor zover ik weet kan het niet" hoop ik altijd dat iemand mij, mét de nodige bewijzen, zal tegenspreken, dus in voorkomend geval: shoot!

@ Linda
Aangezien ik dus denk dat het niet gaat heb ik, grotendeels voor de lol, een stukje code geschreven dat een fake grafiek maakt. Grote kans dat ik hier door de "experten' zal worden afgeschoten, maar ik kan daar mee leven😂
Afhankelijk van je basisgegevens zal het met aan zekerheid grenzende waarschijnlijkheid niet altijd werken, maar als ze enigszins in de lijn liggen van wat in je voorbeeldbestand stond zou het wel eens kunnen volstaan. Afwachten maar...
Voor wat de principes betreft om te bepalen welk gebied gearceerd moet worden heb ik trouwens een beetje moeten gokken.
De bestaande grafiek en afbeelding zijn hiervoor niet nodig, dus die kan je rustig verwijderen.
 

Bijlagen

Ik heb het bestand van @ES genomen.
Knop verwijderd, fakegrafiek verwijderd.

Deze code toegevoegd:

Code:
Sub M_snb()
  With Blad1.ChartObjects(1).Chart
    sp = Array(.ChartArea.Left / 2, .ChartArea.Top, .PlotArea.Left, .PlotArea.Top / 2, .PlotArea.Height)
  End With

  For j = 1 To 2
    y = Application.Match(Application.Max(Range("$D$2:$D$20").Offset(,j - 1)), Range("$D$2:$D$20").Offset(,j - 1), 0)
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(j)
      sn = Array(.Points(y).Left, .Points(y).Top, .Points(y + 1).Left,.Points(y + 1).Top)
    End With

    With Blad1.Shapes.AddShape(8, sn(0) + sp(0) + sp(2), sn(1) + sp(1)+ sp(3), sn(2) - sn(0), sn(3) - sn(1))
      .Fill.ForeColor.RGB = RGB(200, 200, 200)
      .Fill.Transparency = 0.5
      .Line.Visible = False
    End With
    With Blad1.Shapes.AddShape(1, sn(0) + sp(0) + sp(2), sn(3) + sp(1)+ sp(3), sn(2) - sn(0), sp(4) - sn(3))
      .Fill.ForeColor.RGB = RGB(200, 200, 200)
      .Fill.Transparency = 0.5
      .Line.Visible = False
    End With
  Next
End Sub
 
@E v R , @Enigmasmurf , @snb Wauw, jullie zijn fantastisch! Ontzettend bedankt voor de tips en de moeite die jullie hierin hebben gestoken. Hier kan ik zeker verder mee.

@popipipo Werkelijk geen idee wat jij bedoelt, ik zie 9 loodlijnen en 6 getallen op de Y-as. Maar ook jij bedankt voor deze waardevolle en nuttige bijdrage.
 
In je allereerste bijlage zie ik een grafiek in cellen A22:H38.
Ik dacht dat je deze grafiek wilde gebruiken
 
@ES

Gezien je tekst in #8 had ik wel een reaktie op mijn suggestie verwacht, omdat daarin niets gegokt, maar alles berekend wordt en in de grafiek geplaatst. Ik hoop dat je mijn suggestie in jouw bestand getest hebt.
Duidelijk is, dat jouw bewering dat het niet mogelijk zou zijn, niet klopt.
Ik betwijfel of TS hiermee (waarmee ? is onduidelijk) 'verder' kan. Dan ben ik beniewd hoe.

Terzijde de berekening van een uur (kolom B) doe je door het aantal minuten door 60 te delen. Voor dagen (kolom C) deel je door 1440.
 
@snb
Van mij wel een reactie:
Ik denk dat het beter is om de shapes in de grafiek te plaatsen ipv op de sheet, (ivm verplaatsen grafiek of groter maken) dan heb je sp() ook niet nodig maar enkel nog de hoogte van de x-as:

Dan:
Code:
Sub M_snb2()

  For j = 1 To 2
    y = Application.Match(Application.Max(Range("$D$2:$D$20").Offset(, j - 1)), Range("$D$2:$D$20").Offset(, j - 1), 0)
    With Blad1.ChartObjects(1).Chart.SeriesCollection(j)
      sn = Array(.Points(y).Left, .Points(y).Top, .Points(y + 1).Left, .Points(y + 1).Top)
    End With

    With Blad1.ChartObjects(1).Chart.Shapes.AddShape(8, sn(0), sn(1), sn(2) - sn(0), sn(3) - sn(1))
      .Fill.ForeColor.RGB = RGB(200, 200, 200)
      .Fill.Transparency = 0.5
      .Line.Visible = False
    End With
    With Blad1.ChartObjects(1).Chart.Shapes.AddShape(1, sn(0), sn(3), sn(2) - sn(0), Blad1.ChartObjects(1).Chart.Axes(xlCategory).Top - sn(3))
      .Fill.ForeColor.RGB = RGB(200, 200, 200)
      .Fill.Transparency = 0.5
      .Line.Visible = False
    End With
  Next
End Sub
 
Laatst bewerkt:
@EvR

Een listige en creatieve suggestie 👍

De code kan nog wat flexibeler en dus robuuster.

De opmaak van de figuren kan eerst als standaardopmaak gedefinieerd worden, waarna alle nieuwe figuren standaard die opmaak krijgen.

Dat betekent dus:
- eerst de macro die de standaardstijl vastlegt laten lopen
- daarna de 'arceer'macro.

Stijl-macro
Code:
Sub M_snb_000()
  With Blad1.Shapes.AddShape(8, 20, 20, 20, 20)
    .Fill.ForeColor.RGB = RGB(200, 200, 200)
    .Fill.Transparency = 0.5
    .Line.Visible = False
    .SetShapesDefaultProperties
    .Delete
  End With
End Sub

Arceermacro

Code:
Sub M_snb()
  For j = 1 To 2
    With Blad1.ChartObjects(1).Chart.SeriesCollection(j)
      y = Application.Match(Application.Max(.Values), .Values, 0)
      sn = Array(.Points(y).Left, .Points(y).Top, .Points(y + 1).Left, .Points(y + 1).Top)
    End With

    With Blad1.ChartObjects(1).Chart.Shapes
      .AddShape 8, sn(0), sn(1), sn(2) - sn(0), sn(3) - sn(1)
      .AddShape 1, sn(0), sn(3), sn(2) - sn(0), .Parent.Axes(1).Top - sn(3)
    End With
  Next
End Sub
 
@snb
We kennen ondertussen allemaal je 'botte bijl'-manier van communiceren, maar daar waar je het regelmatig inhoudelijk bij het rechte eind hebt heb je in je #12 de nonsens zodanig opgestapeld dat ik, zij het zwaar tegen mijn zin, wel moet reageren.

Laten we beginnen met de meest fascinerende:
Duidelijk is, dat jouw bewering dat het niet mogelijk zou zijn, niet klopt.
Ten eerste heb ik gezegd "voor zover ik weet kan het niet", en daar zelfs de hoop bij uitgesproken dat iemand het tegendeel zou kunnen aantonen! Ten tweede bewijs je zélf dat het niet kan. Een grafiek (niet naar taalkundige maar naar Excel-normen) past zich aan wanneer de brongegevens wijzigen. Ook jij (en trouwens ook E v R die met zijn laatste een merkelijk betere werkwijze dan de jouwe heeft gepresenteerd) moet je toevlucht nemen tot extra objecten die niet bij de grafiek horen. In mijn leefwereld heet dat "het kan niet". Ik sta wel nog altijd open voor de mogelijkheid dat er alsnog een bewijs wordt geleverd!

Gezien je tekst in #8 had ik wel een reaktie op mijn suggestie verwacht, omdat daarin niets gegokt, maar alles berekend wordt en in de grafiek geplaatst.
En hóé weet jij (zelf haal ik mijn glazen bol nog maar héél zelden uit de kast) aan welke voorwaarden moet voldaan zijn om een gebied te arceren? Jawel, ik gokte (maar gaf dat ook duidelijk aan) dat dit was als waarden waren gedaald t.o.v. de voorgaande. En jij gokt dat dit moet gebeuren vanaf de hoogste waarde uit C en die uit D. So what?

Ik hoop dat je mijn suggestie in jouw bestand getest hebt.
Zeer zeker, en afhankelijk van de grootte en de positie van de grafiek kunnen jouw 'arceringen' zelfs buiten het grafiekgebied terechtkomen. Goed berekend!

Ik betwijfel of TS hiermee (waarmee ? is onduidelijk) 'verder' kan. Dan ben ik beniewd hoe.
Ik heb geenszins de ambitie gehad een totaal afgewerkt product te leveren; uiteraard kan dat nog beter (alle objecten groeperen bv. zodanig dat de grafiek kan verplaatst of zijn formaat aangepast worden). Het was dus vooral een ballonnetje oplaten in de hoop dat Linda er mee verder zou kunnen (ook dát heb ik meteen gemeld). Zoals voorzien kan de 'expert' in jou daar niet tegen en is enkel een 100% waterproof oplossing het waard gepost te worden. We hebben gezien tot wat het kan leiden…

Terzijde de berekening van een uur (kolom B) doe je door het aantal minuten door 60 te delen. Voor dagen (kolom C) deel je door 1440.
Wat een openbaring! Dat ik dat niet eens wist!
En voor je het ook nog gelooft: die berekeningen stonden er al, en (ik heb het nog eens nagekeken) de vraag ging heus over iets anders!

@E v R
Dat is dus effectief stukken beter! Ik hoop dat je dit niet als kritiek maar als stimulans zal opvatten: je ingevoegde vormen zijn specifiek verbonden aan het grafiekgebied waardoor wijziging van grootte of verplaatsing van het tekengebied nog problemen geeft. Ik sluit niet uit dat ik er zelf ook nog eens voor ga zitten. Maar, ik zie de bui al hangen, ik weet niet of het haalbaar is;)
 
Vele onder ons weten ook dat @snb een Neerlandicus is.
Dus hier even de vertaling van "Wat een misbaar" zoal kan betekenen.
@snb
Klopt dat? 1747256146333.png

misbaar

misbaar logo #11247(in misbaar maken): tekeergaan, protesteren - Woordfeit: Het zelfstandig naamwoord misbaar heeft niets te maken met onmisbaar. Het is een afleiding van het werkwoord misbaren `tieren, jammeren`. Daarin zit het oude werkwoord baren, dat `zich gedragen` betekende en vaak ook al `tekeergaan`.
 
Topic voorzien van een slotje. Gaat totaal de verkeerde kant op.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan