Documentatie/Calc-functies/VINDENB

From The Document Foundation Wiki
Jump to navigation Jump to search
This page is a translated version of the page Documentation/Calc Functions/FINDB and the translation is 100% complete.
Other languages:
English • ‎Nederlands



Functienaam:

VINDENB

Categorie:

Tekst

Samenvatting:

Gebruikt een hoofdlettergevoelige overeenkomst om de startbyte van een tekstreeks binnen een andere tekstreeks te vinden. Elke string kan zowel enkelbyte- als dubbelbyte-tekens bevatten.

Syntaxis:

VINDENB(Tekst zoeken; Tekst[; Positie])

Retourneert:

Retourneert een positief geheel getal dat de positie is van de eerste byte van het eerste voorkomen van de string die moet worden gevonden, binnen de string die moet worden doorzocht. De geretourneerde waarde kan niet groter zijn dan de lengte (in bytes) van de tekenreeks die moet worden doorzocht.

Argumenten:

Tekst zoeken is een tekenreeks (tussen aanhalingstekens), een getal of een verwijzing naar een cel die één van die typen bevat, dat wil zeggen de tekenreeks die moet worden gevonden.

Tekst is een tekenreeks (tussen aanhalingstekens), een getal of een verwijzing naar een cel die één van die typen bevat, dat wil zeggen de tekenreeks die moet worden doorzocht.

Positie is een positief geheel getal, of een verwijzing naar een cel die een positief geheel getal bevat, dat wil zeggen de bytepositie van waaruit het zoeken begint. Als Positie wordt weggelaten, gebruikt VINDENB de waarde 1.

  • Als Positie een niet-gehele waarde is, kapt VINDENB deze af tot een geheel getal.
  • Na afkappen, als Positie kleiner is dan 1 of groter is dan (LENGTEB(Tekst) - LENGTEB(Tekst zoeken) + 1), dan meldt VINDENB als fout Ongeldig argument (Fout:502).
  • Als er geen overeenkomst wordt gevonden, retourneert VINDENB als fout #WAARDE!. Dit is een foutconditie die moet worden afgehandeld als deze wordt gebruikt als argument voor een andere functie.

Aanvullende details:

Details specifiek voor de functie VINDENB

VINDENB ondersteunt geen jokertekens of reguliere expressies.

Gebruik de functie ZOEKENB als u zoekopdrachten nodig hebt die niet hoofdlettergevoelig zijn.

In Extra ▸ Opties ▸ LibreOffice Calc ▸ Berekenen (of LibreOffice ▸ Voorkeuren ▸ LibreOffice Calc ▸ Berekenen op macOS), heeft de instelling voor Zoekcriteria = en <> moeten op hele cellen toepasbaar zijn geen effect op het gedrag van VINDENB.

Suggesties voor het omgaan met de fout #WAARDE! die wordt geretourneerd wanneer er geen overeenkomst wordt gevonden, zijn onder meer:

  • =ALS(ISFT(VINDENB("xyz"; "abcdef"; 1)); "ERR: Ontbrekende subtekenreeks"; "Subtekenreeks aanwezig") geeft als resultaat "ERR: Ontbrekende subtekenreeks" en geeft niet de fout van de functie VINDENB.
  • =ALS(ISGETAL(VINDENB("xyz"; "abcdef"; 1)); "Substring Present"; "ERR: Ontbrekende Substring") geeft als resultaat "ERR: Ontbrekende Substring" en wordt niet doorgegeven als fout van de functie VINDENB.


Algemene informatie over byte-positiefuncties

Note pin.svg

Note:
Voor het gemak wordt de informatie in dit subgedeelte herhaald op alle pagina's die de bytepositiefuncties van Calc beschrijven.

Calc biedt verschillende byte-positie tekstfuncties, die bedoeld zijn om te worden gebruikt met dubbelbyte tekensettalen (DBCS). Deze functies zijn VINDENB, LINKSB, LENGTEB, DEELB, VERVANGENB, RECHTSB en ZOEKENB. Elk heeft een equivalente "gewone" tekstfunctie met een vergelijkbare naam, maar zonder de laatste letter "B".

Calc beschouwt double-byte-tekens als de tekens die binnen de volgende Unicode-codeblokken liggen:


  • Bopomofo Uitgebreid (U+31A0 ... U+31BF)
  • Bopomofo (U+3100 ... U+312F)
  • CJK Compatibiliteitsformulieren (U+FE30 ... U+FE4F)
  • CJK Compatibility Ideographs Supplement (U+2F800 ... U+2FA1F)
  • CJK Compatibility Ideographs (U+F900 ... U+FAFF)
  • CJK Compatibility (U+3300 ... U+33FF)
  • CJK Radicals Supplement (U+2E80 ... U+2EFF)
  • CJK Strokes (U+31C0 ... U+31EF)
  • CJK Symbols and Punctuation (U+3000 ... U+303F)
  • CJK Unified Ideographs Extension A (U+3400 ... U+4DBF)
  • CJK Unified Ideographs Extension B (U+20000 ... U+2A6DF)
  • CJK Unified Ideographs (U+4E00 ... U+9FFF)
  • Enclosed CJK Letters and Months (U+3200 ... U+32FF)
  • Halfwidth and Fullwidth Forms (U+FF00 ... U+FFEF)
  • Hangul Compatibility Jamo (U+3130 ... U+318F)
  • Hangul Jamo (U+1100 ... U+11FF)
  • Hangul Syllables (U+AC00 ... U+D7AF)
  • High Private Use Surrogates (U+DB80 ... U+DBFF)
  • High Surrogates (U+D800 ... U+DB7F)
  • Hiragana (U+3040 ... U+309F)
  • Ideographic Description Characters (U+2FF0 ... U+2FFF)
  • Kanbun (U+3190 ... U+319F)
  • Kangxi Radicals (U+2F00 ... U+2FDF)
  • Katakana (U+30A0 ... U+30FF)
  • Low Surrogates (U+DC00 ... U+DFFF)
  • Private Use Area (U+E000 ... U+F8FF)
  • Yi Radicals (U+A490 ... U+A4CF)
  • Yi Syllables (U+A000 ... U+A48F)


Zie Wikipedia's Unicode block pagina voor meer informatie over deze blokken.

Bovendien worden de codepunten U+005C en U+20AC als dubbelbytetekens beschouwd als de systeemtaal is ingesteld op Japans.

Zoals opgemerkt in ODF 1.2, zijn byteposities implementatie-afhankelijk en dus vermindert het vertrouwen op hen de interoperabiliteit.


Voorbeelden:

De volgende voorbeelden zijn vergelijkbaar met die gebruikt voor de functie VINDEN en demonstreren het consistente gedrag van de twee functies voor enkelbyte tekenreeksen.

Formule Beschrijving Retourneert
=VINDENB("fifty"; "Fifty-fifty") Hier retourneert de functie 7 omdat de overeenkomst hoofdlettergevoelig is. 7
=VINDENB(76; 998877667654) Hier retourneert de functie 6 omdat het matchen standaard begint bij de eerste byte van de string die moet worden doorzocht. 6
=VINDENB(76; 998877667654; 7) Hier retourneert de functie 9 omdat het matchen begint bij de zevende byte van de string die moet worden doorzocht. 9
=VINDENB(D1; D2; D3) waarbij cel D1, D2 en D3 respectievelijk "Rook", "Ridder" en het cijfer 1 bevatten. Hier retourneert de functie de fout #WAARDE! omdat er geen overeenkomst is. #WAARDE!

De overige voorbeelden demonstreren het gedrag van VINDENB voor tekenreeksen met dubbelbytetekens. Voor een beter begrip vermijden deze voorbeelden het gebruik van tekst in talen zoals Chinees, Japans en Koreaans, waarin dubbelbytetekens worden gebruikt. Omdat dit een Engelstalige pagina is, verwijzen deze voorbeelden naar dubbelbytetekens in het Unicode-blok Halfwidth and Fullwidth Forms die logisch zijn in het Engels. Het Unicode-teken U+3000, ook wel de Ideographic Space genoemd, wordt ook gebruikt in de eerste twee van deze voorbeelden.

Formule Beschrijving Retourneert
=VINDENB("a"; "LibreOffice Calc") Hier is het argument Tekst zoeken een enkelbyte teken (U+0061), terwijl het argument Tekst alleen dubbelbyte tekens bevat. In het bijzonder is de "a" in het Tekst-argument het teken U+FF41 ("Volledige Latijnse kleine letter A"), wat anders is dan U+0061 ("Latijnse kleine letter A"). De functie retourneert de fout #WAARDE! omdat er geen overeenkomst is. #WAARDE!
=VINDENB("a"; "LibreOffice Calc") Hier retourneert de functie 27, de eerste byte van het dubbelbyte "a"-teken binnen het Tekst-argument. 27
=VINDENB("a"; "LibreOffice Calc") Hier bevat het Tekst-argument 12 enkelbyte-tekens gevolgd door vier dubbel-byte-tekens. De functie retourneert 15, de eerste byte van het dubbelbyte "a"-teken binnen het Tekst-argument. 15

Gerelateerde LibreOffice-functies:

VINDEN

LINKSB

LENGTEB

MIDB

VERVANGENB

RECHTSB

ZOEKENB

ODF standaard:

Section 6.7.2, part 2

Gelijkwaardige Excel-functies:

Geen