Wartość PRAWDA nie oznacza jeszcze, że numer jest przypisany do rzeczywiście istniejącego podmiotu gospodarczego. To należy sprawdzić samodzielnie, np. na stronie http://www.krs-online.com.pl. Funkcja ma na celu weryfikację numeru podczas wprowadzania go do arkusza.
Funkcję należy wywołać poleceniem =NIP(nip), gdzie nip jest adresem komórki zawierającej numer NIP lub numerem wpisanym bezpośrednio jako argument funkcji. Funkcja analizuje ciąg ignorując wszystkie znaki niebędące cyfrą. Można zatem podać NIP w postaci dowolnego ciągu zawierającego 10 cyfr, czyli w postaci 999-99-99-999, 999-999-99-99 albo 9999999999.
Jeżeli jako argument funkcji podano zakres komórek, pojawia się komunikat informujący o błędzie i formulę należy poprawić. Analogicznie, gdy wywołano funkcję bez podania argumentu.
Funkcję można wkopiować do biblioteki Standard kontenera „Moje makra”, będzie wówczas dostępna we wszystkich arkuszach otwieranych na komputerze użytkownika.
Wywołanie funkcji:
NIP(nip)
nip – jest analizowanym numerem NIP.
Funkcji można uzyć przy formatowaniu warunkowym. Jeśli utworzono styl o nazwie np. „złynip”, który zawiera czerwone tło, to do komórki, do której wpisywany jest NIP, można przypisac formatowanie warunkowe „Formuła jest: NIE(NIP(komórka)) i styl „złynip”.
Przykłady:
=NIP(A1) zwróci PRAWDA, jeśli ciąg znaków w komórce A1 odpowiada numerowi NIP.
=NIP("899-23-67-273") zwróci PRAWDA, gdyż jest to NIP przypisany do sklepu Kaufland.
=NIP(899-23-67-273) zwróci FAŁSZ, gdyż funkcja najpierw obliczy różnicę tych liczb i ona będzie analizowana jako numer NIP.
=NIP(8992367273) zwróci PRAWDA, gdyż numer odpowiada NIP-owi wspomnianego już sklepu Kaufland.
=NIP("899-23-671-273") zwróci FAŁSZ, gdyż numer zawiera więcej niż 10 cyfr.
=NIP("abcd-8xxx99-23sdr67-273xxx") zwróci PRAWDA, gdyż te 10, znajdujących się w tym ciągu, cyfr odpowiada numerowi NIP.
Funkcja:
Kod: Zaznacz cały
Function NIP (optional a) as Boolean
'-----------------------------------------------------------------------
' Funkcja sprawdza czy wpisany numer NIP jest zgodny z cyfrą kontrolną
' i zwraca PRAWDA gdy jest i FAŁSZ gdy nie jest.
' Funkcja ignoruje znaki niebędące cyframi w analizowanym ciągu.
' Wynik PRAWDA nie oznacza, że taki NIP istnieje naprawdę i jest
' przypisany do jakiejś firmy.
' jermor (2020) polskie forum Apache OpenOffice i LibreOffice.
'------------------------------------------------------------------------
DIM n as double
DIM w(1 to 9) as integer, i as integer, j as integer
NIP=false
If isMissing(a) then
Print "Brak argumentu"
exit function
End If
If isArray(a) then
Print "Argument musi być adresem pojedynczej komórki"
Exit Function
End If
w(1)=6 : w(2)=5 : w(3)=7 : w(4)=2
w(5)=3 : w(6)=4 : w(7)=5 : w(8)=6 :w(9)=7
j=0 : n=0
for i=1 to len(a)
if mid(a,i,1) >="0" and mid(a,i,1)<="9" then
j=j+1
if j<10 then
n=n+w(j)*mid(a,i,1)
elseif j=10 then
n=n mod 11
if n=mid(a,i,1) then NIP=true
elseif j> 10 then
NIP=False
end if
end If
next i
end function