Excel - Bir sütuna bir dize eşleştirin ve 1 artırın

Konu

Aşağıdaki gibi veri içeren iki sayfa var:

Levha:

Dize, sonuç

A0101

Sayfa 1 sütunundaki dizgenin formatı A: Axxxx (A - z ile z arası, x 0 - 9 arası). Alfabe dizi başlangıçtır.

Sayfa 2:

 A0101001 B0102001 Q9911001 S7834001 A0101002 A0101003 

Sütun A sayfa 2 - Axxxxxxx (A - a - z arası, x numarası 0-9)

son üç sayı, ilk beş karakterin her biri için sırayladır.

Yukarıdaki verilerdeki gibi:

 A0101001 A0101002 A0101003 

A0101 dizisi için sayı asla 005’e atlamaz

A2 sayfasındaki 1 hücresindeki dizeyi, 2 sayfasının A sütunundaki değerlerle eşleştirmek istiyorum.

Eğer dizgem: Sayfa 1'den A0101 ve sayfa 2'den aşağıdaki üç girişi buluyorum: A0101001, A0101002, A0101003, sayfa 1'deki B2 hücresindeki sonuç A0101004'dür. Verilerim ardışık.

Çözüm

Sayfa 1’de A3’e bir veri daha ekledim.

B0102

Sayfa 2'de satır sütun başlıklarıdır ve veriler aşağıdadır

dize:

 A0101001 B0102001 Q9911001 S7834001 A0101002 A0101003 

Sonra bu makroyu "test" olarak deneyin. Önce yeniden kontrol etmek istiyorsanız önce mcaro "undo" ve sonra "test" komutunu çalıştırın.

 Alt test () Dim r Aralık, c Aralık, x Dize Dim j Tamsayı, cfind Aralık deni ve D dizini, Dize ekle j = 0 Çalışma Sayfalarıyla ("sheet1") Set r = Range (.Range ( "A2"), .Range ("A2"). End (xlDown)) 'msgbox r.Adres Her c için Adres rx = c.Çalışma sayfaları ile değer ("sheet2") Set cfind = .Cells.Find (what: = x, lookat: = xlPart) Eğer cfind Hiçbir Şey Olmazsa GoTo nnext j = j + 1 add = cfind.Address 'msgbox j' msgbox add Yapın cfind = .Cells.FindNext (cfind) cfind yapın. .Adresi = ekle Sonra GoTo satır1 'msgbox cfind.Adres j = j + 1' msgbox j Döngü satırı1: y = Orta (cfind, 6, 2) 'İle Sonlandır' sheet2 c.Offset (0, 1) = x & y & j + 1 nnext: j = 0 Next c End Sub ile Son Alt Sub undo () Çalışma Sayfalarıyla ("sheet1") Aralık (.Range ("B2"), .Range ("B2"). End (xlDown)). Son Alt ile Son 

Not

Bu ipucu için venkat1926'ya teşekkür ederiz.

Önceki Makale Sonraki Makale

En Ipuçları