Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 1

Cześć, 

 

Przeszukiwałem już różne miejsca sieciowe ale niestety nie mogę odnaleźć wprost odpowiedzi na moje pytanie. Potrzebuje stworzyć makro które będzie kopiowało z pliku A do B. 

 

Przykład:

Mam plik premiowy A w którym każdy z pracowników ma 3 wskaźniki premiowe. W pliku B muszę wyszukać nazwisko konkretnego pracownika i przekopiować dla niego odpowiednie 3 wskaźniki premiowe jakie osiągnął.

 

Niby proste ale jednak potrzebuję pomoc.

 

Pozdrawiam

 

Ł

Łukasz_Chodkowski_jvfp
  • Zapytał
  • @ Łukasz_Chodkowski_jvfp | 12.07.2021
    • 0
    • 0
    • 0

Odpowiedź (1)

  • 1

Z grubsza kod będzie wyglądał jak poniżej, uruchom go z modułu w pliku B (do którego kopiujesz dane):

Sub bonus_indicator_finder()
Dim bonus_wbk As Workbook, employee As Range, empl_name As String, finder As Range

'otwieram plik A i przypisuję go do zmiennej
Set bonus_wbk = Workbooks.Open("E:\excel\employee bonuses.xlsx")

'przechodzę pętlą przez listę pracowników w pliku B
For Each employee In ThisWorkbook.Worksheets("Arkusz1").Range("a2:a6")
   'przypisuję nazwisko pracownika do zmiennej
   empl_name = employee.Value

   'wyszukuję tego pracownika w pliku A
   Set finder = bonus_wbk.Worksheets("Arkusz2").Range("a1:a100") _
               .Find(what:=empl_name, LookIn:=xlValues, lookat:=xlWhole)
   
   'sprawdzam, czy nazwisko zostało znalezione
   If Not finder Is Nothing Then
      'przepisuję wartości wskaźników do pliku B
      With employee
         'w drugim parametrze metody Offset musisz dobrać przesunięcia
         'do układu danych w swoich plikach
         .Offset(0, 1).Value = finder.Offset(0, 1).Value
         .Offset(0, 2).Value = finder.Offset(0, 2).Value
         '...
      End With
   End If
Next

'zamykam plik B
bonus_wbk.Close

End Sub

Do zaciągania danych ze źródeł zewnętrznych polecałbym jednak zaprzyjaźnić się z Power Query, to narzędzie dedykowane do takich zadań.

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 14.07.2021
    • 1
    • 7
    • 1
Komentarze
Super, bardzo dziękuję. Teraz dopiero zobaczyłem, że nie pomyślałem o dodatkowym parametrze który powinienem wziąć pod uwagę. W pliku powinienem porównywac nie tylko nazwisko pracownika miedzy plikami A i B ale też imię, żeby wykluczyć pomyłki wynikające np z tego ze jest kilka osób o tym samym nazwisku w departamencie.
Skomentował : @ Łukasz_Chodkowski_jvfp ,15.07.2021
  • 0
  • 0
  • 0