< návrat zpět

MS Excel


Téma: Challenge - odstranění sloupců s podmínkou rss

Zaslal/a icon 3.12.2015 7:22

eLCHaJen tak z legrace

Odstraňte všechny celé sloupce, které mají v prvním řádku číslo 10.

Kód nesmí obsahovat více než 2 řádky.

With, End With se nepočítá jako řádek
With BlaBla
.BlaBla
End With
= 1 řádek

Použití dvojtečky se považuje za ukončení řádku BlaBla:BlaBla= 2 řádky


Doplnění na základě dotazů:
V prvním řádku můžou být jakákoliv čísla (nejen 1 až 10) nebo prázdné buňky.
10 se musí vyskytovat.

Kdo si chce zapřemýšlet, tak hned neklikejte na druhou stranu, kde je řešení.

Příloha: zip28487_1-10.zip (5kB, staženo 15x)
Zaslat odpověď >

Strana:  « předchozí  1 2 3 4   další »
icon #028498
eLCHa
@marjankaj
Poprosím ten kód do tagu Code

Pěkné.
Člověk nikdy nedomyslí ;)) - takže teď ještě s těmi prázdnými buňkami ;)))citovat
icon #028499
eLCHa
@marjankaj
Teď, když je to v tom tagu, tak vidím, že tam máte Selection a nemáte Select (za který bych Vás mimochodem víte co ;) )
Je to detail, ale takhle to nebude fungovat.citovat
#028500
avatar
Takže takto?
Range(Cells(1, 1), Cells(1, Columns.Count).End(xlToLeft)).Replace What:="10", Replacement:="=na()", LookAt:=xlWhole
Range(Cells(1, 1), Cells(1, Columns.Count).End(xlToLeft)).SpecialCells(xlCellTypeFormulas, 23).EntireColumn.Delete
citovat
#028501
avatar
Když to dokážu jednořádkově, tak se ozvu, jinak to nechám jiným :-Dcitovat
icon #028502
eLCHa
@marjankaj
Ano - to je ono - využití chyby a pěkně bez cyklu.
Díky.

Pro puntičkáře: samozřejmě, pokud by v prvním řádku byl vzorec s chybnou hodnotou, tak to fungovat nebude.

Díky všem, kdo to zkoušeli - vždy je to stejně jenom o tom, jestli to v té hlavě vystřelí nebo ne ;)

@xlnc
držím palce
chvíli jsem uvažoval, ale nic mně zatím nenapadlo, taxem dal 2.
Zatím ;)citovat
icon #028503
eLCHa
Ještě dodám.
Berte jako perličku. Pokud bych toto dělal v nějakém projektu, šel bych na to cyklem podobně jako tarantula222. Protože je to obecné a bezpečné řešení.citovat
#028504
avatar
Vzhledem k tomu, že dvouřádkový je vyřešen, tak malý rozbor:

Úloha má dvě části:
a) Vybrat desítky
- nemůžu přijít na to, jak vybrat oblast desítek (metodu, která by vracela objekt Range s desítkami v jednom kroku). Kdyby se to podařilo, tak
b) je to jasné, nasadit na objekt typu Range EntireColumn.Delete

ad a) Sort bohužel nevrací objekt, pak by se možná v jednom nechalo nasadit vyhledávání (funkce listu, Find), Offset, Resize. SpecialCells taky nevrátí rovnou buňky s desítkama, takže jen přes Replace na něco, co dokážeme vytáhnout. Autofilter + SpecialCells by to snad dokázal v jednom kroku, nicméně nefunguje horizontálně. ALe ještě ě něco napadlo, co musím zkusit...

A opačná úloha: zkuste jednořádkový (nebo co nejkratší) kód pro odstranění nedesítkových sloupců..citovat
#028505
avatar
A taky mě napadlo, co by nejspíš bylo na dva řádky... rekurze.citovat
icon #028508
eLCHa
@xlnc
ad a)
Takže jste se dostal stejně daleko, jako já ;))

Rekurze - vložte ukázku.
Bohužel mám teď fofr - to téma mně napadlo nedávno při odpovědi na jiném fóru.

Ten jeden řádek (nedesítky) už máte vyřešený nebo jen spekulujete ;). A jde o nedesítky nebo o menší než 10 ;)))
Popřemýšlím ;)citovat
#028509
avatar
Nedesítkové řešení mám jednořádkové a v extrému na 56 znaků.

Rekurze mě prostě napadla, nemám ji vyřešenou, každopádně jeden řádek by řešil výmaz a druhý volání, takže žádný zázrak.

Jednořádkové původní řešení původního zadání si myslím existuje. Napadla mě cesta do pekla. Přes Evaluate vyřešit maticový vzorec (přes SMALL) vracející pole desítkových sloupců a předhodit ho Range(pole).EntireColumn.Delete neboColumns(pole).Delete. Evaluate ale má špatnou podporu maticových vzorců a Columns umí pracovat dost možná jen s polem písmenného značení (případně řetězcem přes Join(pole), takže neradostné.citovat

Strana:  « předchozí  1 2 3 4   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Čas od do

lubo • 19.4. 16:30

Makro smyčka

MilanKop • 19.4. 10:46

Makro smyčka

elninoslov • 19.4. 9:02

Čas od do

elninoslov • 19.4. 8:46

Čas od do

jarek1111 • 18.4. 13:46

Čas od do

lubo • 18.4. 11:13

Čas od do

jarek1111 • 18.4. 8:32