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
Pomógł: 1 raz Posty: 346
|
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 54 raz(y) 23.11 KB |
|
|
 | ID posta:
419471
|
|
|
 |
|
|
|
Maciej Gonet
Excel Expert

Wersja: Win Office 365
Pomógł: 3568 razy Posty: 10515
|
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 60 raz(y) 19.67 KB |
|
|
 | ID posta:
419474
|
|
|
 |
|
|
ple4
ExcelSpec

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