Excel - Zápas reťazec na stĺpec & prírastok o 1
Problém
Mám dva listy s údajmi takto:
List:
Výsledok, reťazec
A0101
Formát reťazca v hárku 1 stĺpec A: Axxxx (A - abeceda a až z, x číslo 0-9). Abeceda je sériový štartér.
List 2:
A0101001 B0102001 Q9911001 S7834001 A0101002 A0101003
Stĺpec A List 2 - Axxxxxxx (A - abeceda a až z, x číslo 0-9)
posledné tri čísla sú v poradí pre každý z prvých piatich znakov.
ako vo vyššie uvedených údajoch:
A0101001 A0101002 A0101003
Číslo nebude preskočiť na 005 pre reťazec A0101
Chcem priradiť reťazec v bunke A2 list 1 k hodnotám v stĺpci A listu 2.
Ak je môj reťazec: A0101 z listu 1 a nájdem nasledujúce tri položky z listu 2: A0101001, A0101002, A0101003, výsledok v bunke B2 listu 1 je A0101004. Moje údaje sú sekvenčné.
Riešenie
Do listu 1 som pridal jeden ďalší údaj do formátu A3
B0102
V riadku 2 sú záhlavia stĺpcov a údaje sú uvedené nižšie
reťazec:
A0101001 B0102001 Q9911001 S7834001 A0101002 A0101003
Potom skúste toto makro "test". Ak chcete znova skontrolovať prvé spustenie mcaro "undo" a potom "test"
Sub test () Dim r ako rozsah, c ako rozsah, x ako reťazec Dim j ako celé číslo, cfind As Range Dim y As String, pridajte As String j = 0 S listami ("sheet1") Set r = Range (.Range ( "A2"), .Range ("A2") Koniec (xlDown)) "msgbox r.Address pre každé c V rx = c.Value s pracovnými hárkami (" sheet2 ") Nastaviť cfind = .Cells.Find (čo: = = x, lookat: = xlPart) Ak je cfind nič, potom GoTo nnext j = j + 1 add = cfind.Address 'msgbox j' msgbox pridať Do Set cfind = .Cells.FindNext (cfind) Ak cfind nie je nič, potom GoTo nnext Ak cfind .Address = add Potom GoTo line1 'msgbox cfind.Address j = j + 1' msgbox j Loop line1: y = Mid (cfind, 6, 2) Koniec s 'sheet2 c.Offset (0, 1) = x & y & j + 1 nnext: j = 0 Nasledujúci c Koniec S Koncom Sub Sub undo () S Pracovnými hárkami ("sheet1") Rozsah (.Range ("B2"), .Range ("B2"). Koniec (xlDown)). End With End Sub
Poznámka
Ďakujeme venkat1926 za tento tip.