Funkcja
=IF (B3=””,””, COUNTA ($A$2:A2) +1-COUNTBLANK ($A$2:A2)) albo =IF(B3=””,””,COUNTA($B$3:B3)) albo
=IF(C4=”name”, COUNTA($B$2:B3)+1-COUNTBLANK($B$2:B3),””) etc...
Co jednak, gdy kolumnę zliczającą chcę mieć w Excelu w tabeli, której wszystkie rzędy podczas uaktualniania z zapytania ACE SQL są za każdym razem usuwane przez VBA?
Jeśli jest to tabela (ListObject Table), okazuje się, że wystarczy wkleić makrem formułę do pierwszej komórki kolumny L.p. a reszta komórek w kolumnie zostanie automatycznie wypełniona formułą:
'Add autoincrement to first column Worksheets("Oferta").Range("A7").Formula = "=IF(B7="""","""",COUNTA($B$7:B7))"Może to nie jest najlepsze rozwiązanie, ale działa. Muszę poczytać więcej o: - podzapytaniach, które pozwoliłyby na wykonanie autonumeracji w SQL, - odnoszeniach się do elementów tabeli raczej (ListObject table) niż do adresów komórek. Re1: do przeczytania: ACC2000: How to Rank Records Within a Query https://support.microsoft.com/pl-pl/kb/208946 do przestudiowania, przykład od Pana Jacka Zajadacza, autonumerowanie grup, tutaj płci:
SELECT p1.ID, p1.[Nazwisko], p1.[Imie], p1.plec, count(*) as NUMER FROM Pracownicy AS p1 INNER JOIN Pracownicy AS p2 ON p1.ID > p2.ID and p1.plec= p2.plec GROUP BY p1.ID, p1.[Nazwisko], p1.[Imie], p1.plec ORDER BY p1.plecRe2: np.
'thanks http://stackoverflow.com/questions/18811431/refer-to-excel-cell-in-table-by-header-name-and-row-number-vba Worksheets("Oferta").ListObjects("Table3").DataBodyRange.Cells(1, ActiveSheet.ListObjects("Table3").ListColumns("Lp").Index).Formula = "=IF(B7="""","""",COUNTA($B$7:B7))" 'or more readable Dim tb As ListObject 'assumes Table is the first one on the ActiveSheet Set tb = Worksheets("Oferta").ListObjects("Table3") ' or less precisely ActiveSheet.ListObjects(1) tb.DataBodyRange.Cells(1, tb.ListColumns("Lp").Index.Formula = "=IF(B7="""","""",COUNTA($B$7:B7))"EDIT:
Ostatecznie pojawiła się nowa potrzeba: Muszę policzyć tak, by licznik resetował się, zaczynał od nowa, gdy rozpocznie się nowa grupa:
=IF(G2<>"";COUNTIF($G$2:G2;G2);"")
Brak komentarzy:
Prześlij komentarz