"Wyciąganie" danych z takiego arkusza może okazać nie lada wyczynem.
na początek proponowałbym dodanie kolumny stanowisko jako osobnej np. zaraz po kolumnie imię i nazwisko (ułatwi to parse-owanie danych z kolumny imię i nazwisko).
Na załączonym przez Ciebie obrazku widać, że pracownicy generują różne ilości wierszy i tak:
Monika lp.1 - 3 wiersze
Stanisław lp.2 - 8 wierszy itd.
Jedyne co mi na teraz przychodzi do głowy to przeszukiwanie wierszy po Lp. (kolumna A od 5 wiersza w "dół"),
nowy numer Lp. (większy od poprzedniego w kolumnie A), wpis dotyczący innego pracownika.
Ja to bym zrobił osobny formularz (arkusz) do wprowadzania danych pracownika według tych kryteriów co masz teraz, i na osobnym arkuszu zrobił listę dostępnych pracowników w danym projekcie (numer zlecenia) i po kliknięciu "na pracownika" na liście - dopiero pokazują się dane dla konkretnego pracownika, tylko do wydruku robiłbym zbiorczą tabelę.
Osobny formularz (arkusz) daje nam możliwość zapisania danych do np. pliku csv, xml lub nawet txt, daje nam to łatwiejsze "manipulowanie" danymi.
VBA Read file in Excel (txt, xml, csv, binary)
Przykładowy plik z danymi xml
T-566__25.01.2021.xml
<?xml version="1.0" encoding="UTF-8"?>
<project>
<project_info>
<!--b/d - brak danych -->
<creation_date>25.01.2021</creation_date>
<name>b/d</name>
<!--technical_drawing_number - numer rysunku -->
<technical_drawing_number>b/d</technical_drawing_number>
<model_number>T-566</model_number>
<order_number>b/d</order_number>
</project_info>
<!-- ewidencja godzin B+R -->
<records_of_B_R_hours>
<employee>
<id>1</id>
<name>Monika</name>
<surname>b/d</surname>
<position>Specjalista R&D</position>
<operations>
<operation>
<date>11.01.2021</date>
<title>Opracowanie dokumentacji technicznej</title>
<hours>2</hours>
</operation>
<operation>
<date>11.01.2021</date>
<title>Analiza dokumentacji technicznej</title>
<hours>3</hours>
</operation>
<operation>
<date>28.01.2021</date>
<title>Uzgodnienie warunków technicznych</title>
<hours>2</hours>
</operation>
</operations>
</employee>
<employee>
<id>2</id>
<name>Stanisław</name>
<surname>b/d</surname>
<position>Technolog</position>
<operations>
<operation>
<date>19.01.2021</date>
<title>Analiza dostarczonej dokumentacji technologicznej</title>
<hours>2</hours>
</operation>
<operation>
<date>19.01.2021</date>
<title>Modelowanie 3D</title>
<hours>2.5</hours>
</operation>
<operation>
<date>20.01.2021</date>
<title>Przygotowanie</title>
<hours>2</hours>
</operation>
<operation>
<date>20.01.2021</date>
<title>Analiza wyników</title>
<hours>0.75</hours>
</operation>
<operation>
<date>21.01.2021</date>
<title>Opracowanie dokumentacji 2D</title>
<hours>1.5</hours>
</operation>
<!-- itd. -->
</operations>
</employee>
</records_of_B_R_hours>
</project>
read data from xml file vba excel
Z takiego pliku xml łatwo jest wprowadzić dane do
jak i przeliczyć dane i wprowadzić do
lub
sciezka_pliku = "\\TECHNOLOGIA\EWIDENCJA GODZIN B+R\Projekty_B+R\"
nazwa_pliku = "T-566__25.01.2021.xlsm"
Set project_b_r__app = Workbooks.Open(sciezka_pliku & nazwa_pliku)