VBA yordamida satrlar ustunini tahlil qilish

Men Excel VBA-da satrlardan iborat katak ustunini tahlil qilmoqchiman, har bir hujayrada quyidagilar mavjud:

2 '␂'

Men bu katak mazmunini faqat 2 ta (yoki “satr” dan oldingi har qanday raqamli belgilardan iborat bo‘lishi uchun o‘zgartirmoqchiman. Bunday ma’lumotlarni tahlil qilishning eng oson usuli qanday bo‘lardi? Rahmat.


person stanigator    schedule 29.05.2009    source manba
comment
dublikat stackoverflow.com/questions/924717/ ??   -  person barrowc    schedule 30.05.2009
comment
Bu Barrowcning mavzusida ilgari bergan savolimdan kelib chiqadigan alohida savol.   -  person stanigator    schedule 30.05.2009


Javoblar (2)


Agar formatga ishonchingiz komil bo'lsa, ' (apostrof) oldidan qatorni toping va hujayra qiymatini o'zgartiring. Agar siz ushbu qiymatga ega bo'lgan hujayrada bo'lsangiz, quyidagi VBA kodidan foydalaning.

activecell.text = mid(activecell.text, 1, instr(1, activecell.Text, "'")-1)

U apostrofni qidiradi va undan oldingi belgilarni ajratib oladi va uni joriy katakchaga joylashtiradi.

person shahkalpeshp    schedule 29.05.2009
comment
Apostrof oldidagi raqam 2 o'rniga 2000 yoki 200 bo'lsa-chi? O'rta funktsiyaning 2-parametrini qancha belgilarni qaytarish kerakligi nuqtai nazaridan qanday qilib moslashuvchanroq qilishim mumkin? - person stanigator; 30.05.2009
comment
Bunday holda muammo bo'lmasligi kerak. Kod apostrofni qidiradi va 1-belgidan boshlanishidan oldingi barcha belgilarni qaytaradi. - person shahkalpeshp; 30.05.2009
comment
rahmat. Men baribir foydalanish orqali bilib oldim. - person stanigator; 30.05.2009

Raqamli ma'lumotlar har doim katak boshida bo'ladi deb hisoblasak, siz Regex-dan qatorning boshida har qanday ketma-ket raqamlarni topish uchun foydalanishingiz mumkin, u birinchi raqamli bo'lmagan belgilarga tegsa, to'xtatiladi. Mana buni siz uchun bajaradigan funksiya, bu yordam beradi deb umid qilaman. ^ katakning boshlanishini bildiradi va (\d+) bir yoki bir nechta raqamli belgilarni va .* belgisidan keyin nol yoki undan ortiq belgilarni bildiradi. Sizga kerak bo'lgan raqamlarning faqat bitta qatori bor deb o'ylayman, shuning uchun menda regex faqat submatch 0 ni qaytaradi (birinchi o'yin).

Function ExtractNumericData(ByVal text As String) As String

Application.ScreenUpdating = False
Dim allMatches As Object
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")

RE.Pattern = "^(\d+).*"
RE.Global = True
Set allMatches = RE.Execute(text)
ExtractNumericData = allMatches.Item(0).submatches.Item(0)
Application.ScreenUpdating = True

End Function
person aevanko    schedule 30.06.2011