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: 264
|
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 9 raz(y) 23.11 KB |
|
|
 | ID posta:
419471
|
|
|
 |
|
|
|
Maciej Gonet
Excel Expert

Wersja: Win Office 365
Pomógł: 2920 razy Posty: 8759
|
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 12 raz(y) 19.67 KB |
|
|
 | ID posta:
419474
|
|
|
 |
|
|
ple4
Stały bywalec Excelforum

Wersja: Win Office 2003
Pomógł: 62 razy Posty: 289
|
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
|
|
|
 |
|
|
|
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
|
|
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
|