Avatar billede jorgenjo Nybegynder
12. maj 2015 - 14:57 Der er 6 kommentarer og
1 løsning

Makro til at tælle rækker i tabel2 og indsætte samme antal rækker i tabel1

Vil gerne have en makro som tæller synlige rækker i en filtreret tabel2 og indsætter samme antal rækker i tabel1
Avatar billede jens48 Ekspert
12. maj 2015 - 20:29 #1
Det kunne for eksempel gøres således:

Sub TableRows()
Range("Table1").Columns(1).Rows(2) = Range("Table2").Columns(1).Rows.SpecialCells(xlCellTypeVisible).Count
End Sub
Avatar billede jorgenjo Nybegynder
13. maj 2015 - 07:46 #2
Makroen tæller godt nok antallet af rækker i tabel2 og returnerer antallet i cellen, hvor der burde stå Total i tabel1, men den sætter ikke det ønskede antal rækker ind.
Avatar billede jens48 Ekspert
13. maj 2015 - 08:55 #3
Jeg forstår ikke helt din kommentar. Hvis du mener den tæller forkert, kan det være du skal trække overskriften fra. Så ville den se således ud:

Sub TableRows()
Range("Table1").Columns(1).Rows(2) = Range("Table2").Columns(1).Rows.SpecialCells(xlCellTypeVisible).Count - 1.
End Sub

Og hvis du ønsker at tallet skal stå i en anden celle kan du blot ændre tallet efter Columns of Rows. Som den er nu sætter den tallet ind i 1. kolonne og 2, række

PS: Det er ikke dig der skal give svar. Det skal jeg, hvis det elllers lykkes for mig at give dig en tilfredsstillende løsning.
Avatar billede jorgenjo Nybegynder
13. maj 2015 - 12:53 #4
Da jeg prøvede makroen talte den, at der f.eks var 34 tabel rækker i tabel2, og det skrev den i tabel1 i den celle i tabellens nederste række yderst til venstre, hvor der før stod ordet Total.

Den skal ikke skrive tallet f.eks 34 nogen steder, men blot bruge antallet til at makroen indsætter 34 tomme rækker i tabel 1, når den har talt til 34 tabelrækker i tabel2.

34 er kun et eksempel det ændre sig fra søgning til søgning.
Avatar billede jens48 Ekspert
14. maj 2015 - 00:50 #5
Ja, Jeg havde ikke fået læst opgaveformuleringen grundigt nok. Prøv med denne:

Sub TableRows()
Dim x, y As Double
Dim Tbl As ListObject
y = Range("Table1").Columns.Count
If Range("Table1").Rows.Count > 1 Then
ActiveSheet.ListObjects("Table1").DataBodyRange.EntireRow.Delete
End If
x = ActiveSheet.ListObjects("Table2").DataBodyRange.Columns(1).SpecialCells(xlCellTypeVisible).Count
Set Tbl = ActiveSheet.ListObjects("Table1")
With ActiveSheet.ListObjects("Table1")
    .Resize .Range.Resize(x + 1, y)
End With
End Sub
Avatar billede jorgenjo Nybegynder
17. maj 2015 - 19:36 #6
Tak for dit svar - det er jeg rigtig glad for - har dog ændret et par småting, men nu virker det i mit ark.

Send et svar til dine point!


Sub TableRows2()
Dim x, y As Double
Dim Tbl As ListObject
y = Range("Tabel1").Columns.Count
If Range("Tabel1").Rows.Count > 1 Then
ActiveSheet.ListObjects("Tabel1").DataBodyRange.EntireRow.Delete
End If
Sheets("Data").Select
x = ActiveSheet.ListObjects("Tabel2").DataBodyRange.Columns(1).SpecialCells(xlCellTypeVisible).Count
Sheets("Tabel1").Select
Set Tbl = ActiveSheet.ListObjects("Tabel1")
With ActiveSheet.ListObjects("Tabel1")
    .Resize .Range.Resize(x + 2, y)
End With
End Sub
Avatar billede jens48 Ekspert
17. maj 2015 - 19:51 #7
Godt du kunne bruge den
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel-kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester