Excel - vymazanie riadkov podľa podmienky

Všetko o programoch, problémoch...
POZOR: žiadny WAREZ
Používateľov profilový obrázok
Gudas
VIP
VIP
Príspevky: 6514
Dátum registrácie: Po 09. Okt, 2006, 02:00
Bydlisko: Rudina (27)

Excel - vymazanie riadkov podľa podmienky

Príspevok od používateľa Gudas »

Zdravím páni.
Potrebujem poradiť v jednej veci. Najlepšie ak to poviem na príklade.

Mám niekoľko tisíc riadkov v tabuľke, pričom riadky reprezentujú, dajme tomu, objednávky. Niekoľko riadkov ale je pre jednu, rovnakú objednávku (teda napr. tri riadky s rovnakou objednávkou), pričom sa líšia medzi sebou, dajme tomu, cenou.

Moja otázka znie - ako vymazať tie riadky jednej objednávky, ktoré majú nižšiu cenu. V konečnom dôsledku by tak mal ostať iba riadok s najvyššou cenou pre danú objednávku. A toto aplikovať na celú tabuľku s množstvom objednávok :-)

Nápady? Za odmenu donesiem dáke nemecké pivko :good:

Príklad:
Chcem vymazať jeden riadok zákazky 43448807, prvý riadok zákazky 43448808, prvý a druhý riadok zákazky 43448811, atď.
Snímka.PNG
Spoiler: ukázať
Desktop| ASRock Z68 Pro3-M | Core i3 3220 @ 3,4GHz + Phanteks PH-TC14PE (pasívne) | 12GiB DDR3 1333MHz | MSI GTX760 Gaming | SuperFlower Golden King 550W 80+ Platinum | Crucial m4 256GB + WD 1TB Red 2,5" 5400rpm @ Scythe Quiet Drive| Fractal Design Define Mini + Nexus D12SL-12 + Noiseblocker PK-1 + Scythe Gentle Typhoon | LG IPS235 + LG L225WT | Creative Inspire T2900 + Beyerdynamic DT990 Pro + Creative X-Fi HD | Logitech MX1100 + QcK Steel mini
Laptop| Acer Aspire One 753 | Celeron U3400 (1,06GHz) | 2x2GiB DDR3 | A-DATA S599 128GB
PC.sk IRC kanál PC.sk
Práve testujem: - Next: -
Používateľov profilový obrázok
galen
Používateľ
Používateľ
Príspevky: 2237
Dátum registrácie: Št 01. Jún, 2006, 02:00
Bydlisko: Zilina

Re: Excel - vymazanie riadkov podľa podmienky

Príspevok od používateľa galen »

makro ...
pre jednoduchost spravit loop, ktory prebehne N-riadkov (N zadas rucne do zdrojakov - vies kolko je riadkov)
skontrolujes si Cell().Value - podmienka na velkost
nasledne odmazes cely riadok ...

Kód: Vybrať všetko

Sub RowRemoval()
    Dim searchCol As Integer
    Dim startingRow As Integer
    Dim currentRow As Integer
    Dim maxRow As Integer
    Dim criticalValue As Double    
    
    startingRow = 2
    searchCol = 2
    maxRow = 22
    criticalValue = 5.13 
        
    currentRow = startingRow
    While currentRow <= maxRow
        If Cells(currentRow, searchCol) >= criticalValue Then
            Rows(currentRow).Select
            Selection.Delete Shift:=xlUp
            maxRow = maxRow - 1
        Else
            currentRow = currentRow + 1
        End If
    Wend
End Sub
criticalValue - hodnota, ktoru ked to aspon nadobudne, tak to maze riadok
startingRow - zacina od riadku ...
maxRow - kolko riadkov v tabulke (jednoduhsie zistit okom, ako algoritmicky cez selection regionu a podobne)
searchCol - stlpec ... B je 2, A je 1, C je 3 ... stlpec, ktoru hodnut potrebujes monitorovat

ahaa ... az teraz mi to doslo ... plus este filtrovanie na cislo zakazky :/
pi@i...
lava, prava, lava, prava ...
Používateľov profilový obrázok
galen
Používateľ
Používateľ
Príspevky: 2237
Dátum registrácie: Št 01. Jún, 2006, 02:00
Bydlisko: Zilina

Re: Excel - vymazanie riadkov podľa podmienky

Príspevok od používateľa galen »

ok, takze druhy pokus:
1) usporiadat podla hodnoty zakazky (nejak si to prepocitaj, ci uz pomer dni/cena, alebo priamo cena ... skratka ... aby bola najvyhodnejsia ponuka najvyssie)
2) nasledne usporiadane podla vyhodnosti usporiadat podla nazvu zakazky

... ziskame tak skupinky s rovnakym nazvom, ale usporiadane podla vyhodnosti ...
takze uz iba odstranit vsetky - az na posledny zaznam (lebo prvy-najvyhodnejsi mame hore)

Kód: Vybrať všetko

Sub RowRemoval()
    Dim startingRow As Integer
    Dim currentRow As Integer
    Dim maxRow As Integer
    Dim nameCol As Integer
    
    startingRow = 2
    maxRow = 22
    nameCol = 1
    
    currentRow = startingRow
    While currentRow < maxRow
        If Cells(currentRow, nameCol) = Cells(currentRow + 1, nameCol) Then
            Rows(currentRow + 1).Select
            Selection.Delete Shift:=xlUp
            maxRow = maxRow - 1
        Else
            currentRow = currentRow + 1
        End If
    Wend
End Sub
parametre v kode:
startingRow - riadok od ktoreho to ma zbehnut ...
maxRow - po ktory riadok (vratane riadku pod nim - porovnavacky/mazanie, takze ak mas 100 zaznamov, maxRow je 99)
nameCol - poradie stlpcu s menom zakazky
lava, prava, lava, prava ...
Používateľov profilový obrázok
Gudas
VIP
VIP
Príspevky: 6514
Dátum registrácie: Po 09. Okt, 2006, 02:00
Bydlisko: Rudina (27)

Re: Excel - vymazanie riadkov podľa podmienky

Príspevok od používateľa Gudas »

Veľmo pekne ďakujem :)
K tomu pifku... čierne? Pils? Weizen? ... :-D
Spoiler: ukázať
Desktop| ASRock Z68 Pro3-M | Core i3 3220 @ 3,4GHz + Phanteks PH-TC14PE (pasívne) | 12GiB DDR3 1333MHz | MSI GTX760 Gaming | SuperFlower Golden King 550W 80+ Platinum | Crucial m4 256GB + WD 1TB Red 2,5" 5400rpm @ Scythe Quiet Drive| Fractal Design Define Mini + Nexus D12SL-12 + Noiseblocker PK-1 + Scythe Gentle Typhoon | LG IPS235 + LG L225WT | Creative Inspire T2900 + Beyerdynamic DT990 Pro + Creative X-Fi HD | Logitech MX1100 + QcK Steel mini
Laptop| Acer Aspire One 753 | Celeron U3400 (1,06GHz) | 2x2GiB DDR3 | A-DATA S599 128GB
PC.sk IRC kanál PC.sk
Práve testujem: - Next: -

Návrat na "Programy a problémy s nimi"