Hei
Ongelmani on seuraava: Yrityksessä tehdään usealle asiakkaalle tarjouksia samasta projektista. Käytännössä siis Asiakas A:n tarjous Projekti X:stä kopioidaan Asiakas B:lle jne. Lopputuloksena on esim. 6 tarjousta samasta projektista mutta vain yhdestä voi valitettavasti tulla tilaus.
Yritän saada selville yrityksen HITRATE-arvoa ja tämähän ei onnistu jos kaikki kuudesta samaa projektia koskevasta tarjouksesta kaikki ovat tarjouskannassa. Yksi tarjous on siellä statuksella "WON" ja 5 statuksella "INPROG".
Tietueet eivät ole identtisiä, mutta "Project" kentässä on kaikilla identtinen tieto.
Onko mahdollista Excelin normaaleilla työkaluilla saada kanta putsattua siten, että saman projektin tarjouksista poistetaan muut paitsi se jolla status-kentässä on arvo "WON" tai toisaalta silloin kun mitään tarjousta ei ole hyväksytty (eli kaikki statuksella "INPROG") niin poistetaan muut paitsi se jonka loppusumma kentän arvo on pienin?
Onnistuuko siis Excelin normaaleilla työkaluilla vai pitääkö ryhtyä harjoittelemaan VB:tä? :)
Duplikaatit ja tietueiden poistaminen
3
361
Vastaukset
- PulassaOleva
Ongelma on siis sellainen, että pitää verrata kolmen eri sarakkeen (Project, Status ja Tarjoussumma) tietoja ja pystyä poistamaan turhat rivit.
1. Jos Project sarakkeesta ei löydy duplikaattia rivi saa jäädä koskemattomaksi.
2. Jos Project sarakkeesta löytyy yksi tai useampi duplikaatti on verrattava Status saraketta ja jos Statuksena on WON niin kyseinen rivi jää, mutta muut rivit pitäisi saada poistettua.
3. Jos Project sarakkeesta löytyy yksi tai useampi duplikaatti ja kaikilla niillä on Status sarakkeessa arvona INPROG niin täytyy verrata Tarjoussumma sarakkeen arvoja kyseisillä riveillä ja jättää jäljelle se rivi jossa arvo on pienin ja poistaa muut rivit. - Tämmöinen
Oletus: tiedot ovat Sheet1:n sarakkeissa A-C ja ensimmäinen rivi on otsikko.
Sub PoistaDuplikaatit()
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SortFields.Clear
.SortFields.Add Key:=Range("A:A"), Order:=xlAscending
.SortFields.Add Key:=Range("B:B"), Order:=xlDescending
.SortFields.Add Key:=Range("C:C"), Order:=xlDescending
.SetRange Range("A:C")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
r = 1
Do
If Cells(r, 1) <> Cells(r 1, 1) Then
r = r 1
Else
Rows(r 1).Delete
End If
Loop Until Cells(r, 1) = ""
End Sub - PulassaOllut
Kiitos Paljon!
Homma toimi kun muutin oikeat sarakkeet ja hinta-sarakkeelle xlAscending xlDescending:n sijaan.
Olikin aika yksinkertainen juttu loppujen lopuksi (jos sen osaa)
Vielä kerran paljon kiitoksia.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Orpo räyhää: kansan on muututtava
Orpon mukaan kansa ei elä kokoomuksen kanssa samassa todellisuudessa, ja sen vuoksi kansan on muututtava. Kas kun ei san2663333Muovikassikartelli
Kauppaketjut ovat yhdessä sopineet muovikassin yksikköhinnaksi 59 senttiä. Milloin viranomaiset puuttuvat tähän kartell211843Aidon persun tunnistaa Marinin palvonnasta
Oli kyse sitten Halla-ahosta tai Putinista. Ensimmäisenä aidolle persulle tulee mieleen Marin.241506- 821359
- 1371038
- 81994
Hallintooikeus..
"Asemakaavapäätös pysyy voimassa.Poikkeamista ja rakentamista koskevat luvat hylättiin" kertoo Pyhäjärven Sanomat netti.62809Olen rakastunut
varattuun joka ei eroa. Miten tunteista eroon? Tämä ei ole tavanomaista. On elämäni suuri rakkaus.86756Jos se joskus oli molemminpuolista
niin hyvin me molemmat onnistuttiin pitämään toinen epätietoisena.61687Laita nyt se viesti
Tiedän että haluat tavata. Kirjoitat, pyyhit, kirjoitat... Lähetä se viesti 😗51656