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
Príklad:
Chcem vymazať jeden riadok zákazky 43448807, prvý riadok zákazky 43448808, prvý a druhý riadok zákazky 43448811, atď.
Excel - vymazanie riadkov podľa podmienky
Re: Excel - vymazanie riadkov podľa podmienky
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 ...
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...
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
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 ...
Re: Excel - vymazanie riadkov podľa podmienky
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)
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
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
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 ...
Re: Excel - vymazanie riadkov podľa podmienky
Veľmo pekne ďakujem
K tomu pifku... čierne? Pils? Weizen? ...
K tomu pifku... čierne? Pils? Weizen? ...