Excel 2007: kopiowanie dynamicznego zakresu wg. kryteriów


(pawelcielma) #1

Witam wszystkich.

Mam taki problem:

Importuję do Excela 2007 dane z bazy MSSQL.

Dane są w postaci:

Arkusze dane źródłowe - to te z importu

Zakres tych danych jest dynamiczny d dół (zwiększa się ilość wierszy)

http://img830.imageshack.us/img830/9093 ... rukark.jpg

Arkusze takie jak BM653 - to arkusze z kolejnymi drukarkami

Potrzebuję formuł (ostatecznie makra - chociaż nigdy nie robiłem makr), które dla kolejnej drukarki założy nowy arkusz (lub skorzysta z założonych - w przypadku formuł) i skopiuje tam dane z jednej drukarki.

Dodatkowo chcę stworzyć tabelkę, która pokazuje ile razy alarm wystąpił (w arkuszu robię to formułą =LICZ.WARUNKI(Drukarka_SN;$B$2;alarm_typ;"Error")).

Drukarka_SN i alarm_typ są zakresami dynamicznymi: =PRZESUNIĘCIE('Dane źródłowe'!$D$1;0;0;ILE.NIEPUSTYCH('Dane źródłowe'!$D:$D))

Jeśli da się to zrobić formułami to będzie fajnie, jeśli trzeba wykorzystać makro to powinien być przycisk w arkuszu Dane źródłowe do wykonania kopiowania i obliczeń.

Za wszelką pomoc będę wdzięczny


(goomish) #2
  1. Makro tworzące arkusz o nazwie pobranej z konkretnej komórki:

http://www.mrexcel.com/td0123.html

  1. Kopiowanie zakresu do nowego arkusza:

http://www.excelforum.com/excel-program ... sheet.html

Oba makra wymagają oczywiście dostosowania do swoich potrzeb lub ew. scalenia w jedno makro od razu tworzące arkusz i kopiujące do niego zadany zakres komórek

Ad2. Po namyśle przestałem być pewien, że ci ten drugi punkt jest potrzebny :). Bo może ty po prostu zaimportujesz do nowego arkusza dane z zewnętrznego źródła i po sprawie.


(pawelcielma) #3

No tak

Ale ja nigdy makra nie robiłem i nie potrafię przerobić tych makr.

Potrzebuję gotowego makra (do przerobienia - nazwy, zakresy)

Ja wolałbym formuły do kopiowania danych wg kryteriów - po drukarce i dla dynamicznego zakresu


(goomish) #4

To pierwsze makro nie wymaga właściwie żadnych zmian. Może oprócz adresu komórki, z którego ma "pobierać nazwę nowo tworzonego arkusza. Chodzi o wiersz

If Target.Address = "$A$1

Czyli:

  • musisz tak zorganizować arkusz i ew. zastosować formułę, żeby w wybranej przez ciebie komórce pojawiła się nazwa drukarki, której dane zaimportowałeś ostatnio

  • w wierszu powyżej zmienić $A$1 na adres komórki o której przed chwilą

  • uruchamiasz makro i sprawdzasz czy to działa (dobrze by było to makro sobie podpisać cyfrowo, bo inaczej Excel będzie się burzył i blokował jego wykonanie - tak w skrócie)

Co do drugiego linka - tu to niestey sam nie umiem tego pozmieniać, więc raczej nie pomogę :slight_smile: