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.

Predchádzajúci Článok Nasledujúci Článok

Najlepšie Tipy