< návrat zpět

MS Excel


Téma: Pomoc se vzorcem VBA rss

Zaslal/a 11.7.2014 9:15

Zdravím, potřeboval bych pomoc s upravením vzorce. Už si nevím rady.

Mám ve sloupci A texty a ve sloupcích E:SA mám jednicky až do řádku 1745. Potřebuju, aby se vypsali ty texty, u kterých je v jednotlivých sloupcích jednička do E:SA 1748. (Tedy pro každý sloupec)

Mám k dispozici vzorec VBA, který to dokáže udělat pro jeden sloupec E ... mohli byste mi ale pomoct s tím, aby to bylo pro všechny sloupce? Díky.

Sub Vypis()

Dim Numbers() As Variant

Dim Texts() As Variant

Dim List() As Variant

Dim CountNumbers As Long

Dim i As Long, j As Long

With ActiveSheet

Texts = .Range("A3:A1745").Value

Numbers = .Range("E3:E1745").Value2



CountNumbers = WorksheetFunction.CountIf(ActiveSheet.Range("E3:E1745"), "1")

If CountNumbers = 0 Then GoTo TheEND



ReDim List(1 To CountNumbers, 1 To 1)



j = 0

For i = LBound(Numbers) To UBound(Numbers)

If Numbers(i, 1) = 1 Then

j = j + 1

List(j, 1) = Texts(i, 1)

If j = CountNumbers Then Exit For

End If

Next

.Range("E1748").Resize(CountNumbers, 1).Value = List

End With

TheEND:

End Sub

Zaslat odpověď >

Strana:  « předchozí  1 2
#020520
avatar

Dingo napsal/a:

TAK JEŠTĚ JEDNOU. Se vzorovým souborem jsem udělal JEN toto: smazal původní makro, nakopíroval nové makro z mého příspěvku z 11.7., zeditoval chybu tam, kde je řádek rozdělený podtržítkem a FUNGUJE to.Příloha: 20511_sample35.zip


Jo, máš pravdu, funguje to dobře, díky :)

Chtěl bych se zeptat. Když bych potřeboval změnit rozsahy pro jiný soubor, tak jak to udělat? Změnil jsem co sem mohl, ale vypisuje to jen po sloupec M.

Přikládám kód zde:
Sub Vypis()

Dim Numbers() As Variant
Dim Texts() As Variant
Dim List() As Variant
Dim CountNumbers As Long
Dim i As Long, j As Long, k As Long
With ActiveSheet
For k = 5 To 495
Texts = .Range("A4:A2098").Value
Numbers = .Range(Cells(4, k), Cells(2098, k)).Value2
CountNumbers = WorksheetFunction.CountIf(ActiveSheet _
.Range(Cells(4, k), Cells(2098, k)), "1")
If CountNumbers = 0 Then GoTo TheEND
ReDim List(1 To CountNumbers, 1 To 1)
j = 0
For i = LBound(Numbers) To UBound(Numbers)
If Numbers(i, 1) = 1 Then
j = j + 1
List(j, 1) = Texts(i, 1)
If j = CountNumbers Then Exit For
End If
Next i
.Cells(2100, k).Resize(CountNumbers, 1).Value = List
Next k
End With
TheEND:

End Sub
citovat
#020525
avatar
To je divné, mě ten tvůj kód z předchozího příspěvku funguje pro všechny sloupce E:SA, v řádcích 4:2098 a vypisuje do řádku 2100.
Do přílohy jsem to trochu upravil. Makro je v Module1. Tam se obvykle dává, ne do Listu, i když i tam funguje.
Jsou tam extra řádky pro zadání rozsahu. Není to vstupem (Input) po spuštění, ale musíš přepsat přímo v kódu řádky a sloupce, tam, kde je to poznámkou označené. Vyzkoušej.
Příloha: zip20525_sample35.zip (81kB, staženo 12x)
citovat
#020527
avatar
No ťažko takto naslepo, keď to nedáš s prílohou. Možno máš stlpec N celý prázdny.citovat
#020528
avatar
Marjankaj, nic ve zlém, on už dal přílohu, dostal i odpověď. Tvoje příspěvky jsou značně opožděné a jen matou tazatele. 5citovat
#020531
avatar

Dingo napsal/a:

Marjankaj, nic ve zlém, on už dal přílohu, dostal i odpověď. Tvoje příspěvky jsou značně opožděné a jen matou tazatele.


No keby si to poriadne čítal, tak určite narazíš aj na toto z (14.7.2014 14:57)

Jo, máš pravdu, funguje to dobře, díky :)

Chtěl bych se zeptat. Když bych potřeboval změnit rozsahy pro jiný soubor, tak jak to udělat? Změnil jsem co sem mohl, ale vypisuje to jen po sloupec M.citovat
#020532
avatar

Dingo napsal/a:

To je divné, mě ten tvůj kód z předchozího příspěvku funguje pro všechny sloupce E:SA, v řádcích 4:2098 a vypisuje do řádku 2100.
Do přílohy jsem to trochu upravil. Makro je v Module1. Tam se obvykle dává, ne do Listu, i když i tam funguje.
Jsou tam extra řádky pro zadání rozsahu. Není to vstupem (Input) po spuštění, ale musíš přepsat přímo v kódu řádky a sloupce, tam, kde je to poznámkou označené. Vyzkoušej.Příloha: 20525_sample35.zip


Ahoj, už sem na to přišel proč to tak dělá. Ve sloupci M nebyly žádné jedničky, tak se ten program ukončil :).

Každopádně díky, moc si mi pomohl a zároveň o dost vše usnadnil 10citovat
#020533
avatar
@Plavacek
No vidíš, keby si dal ten zošit celý, tak by Dingo na to takisto prišiel.
Takto sa bavíte jeden o koze a druhý o voze. 7

Stačí iba prehodiť riadky

TheEND:
Next k
End With
End Subcitovat

Strana:  « předchozí  1 2

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