Excel - Bir sütuna bir dize eşleştirin ve 1 artırın
![](http://img.brin-designs.com/img/games/177/excel-match-string-column-increment-1.png)
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.