Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
Przesunięty przez: Kaper
07-08-2022, 14:40
VBA - porównanie wartości w arkuszach :)
Autor Wiadomość
arturpl 
Stały bywalec Excelforum


Wersja: Win Office 365
Posty: 259
Wysłany: 06-08-2022, 14:18   VBA - porównanie wartości w arkuszach :)

Chciałbym porównać czy nazwy kolumn w arkuszu "Dane" w wierszu 4 są identyczne, i w tej samej kolejności jak w arkuszu "Ustawienia" w kolumnie "B". Jak to porównać w VBA?

program.xlsm
Pobierz Plik ściągnięto 6 raz(y) 23.11 KB

ID posta: 419471 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 365
Pomógł: 2828 razy
Posty: 8516

Wysłany: 06-08-2022, 15:24   

Można np. użyć takiej funkcji:
Kod:
Function CompareHeaders(headers As Range, list As Range) As Boolean
   Do
      If headers.Value <> list.Value Then
         MsgBox "Pierwsza różnica" & vbLf & _
            "Nagłówek: " & headers.Value & vbLf & _
            "Lista:    " & list.Value
         Exit Function
      End If
      Set headers = headers.Offset(, 1)
      Set list = list.Offset(1)
   Loop Until headers.Value = vbNullString And list.Value = vbNullString
   CompareHeaders = True
End Function

Można ją wywołać w arkuszu:
Kod:
=CompareHeaders(adres_nagłówka_poziomy; adres_listy_pionowy)
Jako pierwszy argument należy podać odwołanie do pierwszej komórki nagłówka, a jako drugi argument - odwołanie do pierwszej komórki listy. Komórki w pierwszym zakresie muszą stanowić wiersz, a komórki w drugim - kolumnę. Jeśli zapisy są zgodne funkcja zwróci wartość PRAWDA, a jeśli niezgodne - wyświetli MsgBox z pierwszą niezgodnością (a zwróci FAŁSZ).

program_porównanie.xlsm
Pobierz Plik ściągnięto 8 raz(y) 19.67 KB

ID posta: 419474 Skopiuj do schowka
 
 
ple4
Stały bywalec Excelforum


Wersja: Win Office 2003
Pomógł: 58 razy
Posty: 261
Wysłany: 07-08-2022, 01:18   

arturpl napisał/a:
czy nazwy kolumn w arkuszu "Dane" w wierszu 4 są identyczne, i w tej samej kolejności jak w arkuszu "Ustawienia" w kolumnie "B"

Z naznaczenia nie są, gdyż mają różną ilość "elementów" - gdyby miały równą, to można by tak:
Kod:
Option Explicit

Sub dżdżownice_dwie()
    Dim a, b, c$, d$
   
    a = Worksheets("Dane").Range("B4:K4").Value
    b = Worksheets("Ustawienia").Range("B4:B15").Value
   
    c = Join(Application.Transpose(Application.Transpose(a)), ",")
    d = Join(Application.Transpose(b), ",")
   
    Debug.Print c
    Debug.Print d
   
    If c = d Then MsgBox "Dane = Ustawienia" Else MsgBox "Dane <> Ustawienia"
End Sub
ID posta: 419482 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe