У Екцелу, постоје тренуци када желимо да потпуно преокренемо текст или њихов редослед са ВБА кодом. Могу постојати различити захтеви, попут издвајања обрнутог садржаја ћелије, обрнутог редоследа ћелија итд.
У овом чланку ћемо научити следеће:
- Како добити повратни садржај ћелије?
- Како добити све речи обрнутим редоследом из ћелије?
- Како обрнути редослед колона?
- Како добити обрнуте бројеве само из текста?
- Како поништити садржај ћелије активне ћелије?
Како добити повратни садржај ћелије?
У Екцелу постоје захтеви да се обрне текст или бројеви у ћелијама, нпр. „Енглески“ на „хсилгне“
Следи снимак података пре излаза:
Следи снимак захтеваног излаза у колони Б:
Да бисмо добили горњи излаз, морамо слиједити доње кораке за покретање ВБ уређивача
- Кликните на картицу Девелопер
- Из групе кодова изаберите Висуал Басиц
- Копирајте доњи код у стандардни модул
Функција ЦомплетеРеверсе (рЦелл Ас Ранге, Оптионал ИсТект Ас Боолеан) Дим и Ас Интегер Дим СтрНевТкт Ас Стринг Дим стрОлд Ас Стринг стрОлд = Трим (рЦелл) За и = 1 до Лен (стрОлд) СтрНевТкт = Мид (стрОлд, и, 1) & СтрНевТкт Следеће и Ако је ИсТект = Фалсе Тада ЦомплетеРеверсе = ЦЛнг (СтрНевТкт) Остало ЦомплетеРеверсе = СтрНевТкт Крај ако је функција завршетка
- У ћелији Б1 формула ће бити
- = ЦомплетеРеверсе (А1, ТРУЕ)
Како добити све речи обрнутим редоследом из ћелије?
Имаћемо неколико кодова да пронађемо решење. Да бисмо добили све речи обрнутим редоследом, копираћемо и залепити следећи код у модул
Функција РеверсеОрдер1 (Рнг Ас Ранге) Дим Вал Као Вариант, Цоунтер Ас Интегер, Р () Ас Вариант Вал = Сплит (Апплицатион.ВорксхеетФунцтион.Субституте (Рнг.Валуе, "", ""), ",") РеДим Р (ЛБоунд (Вал) За УБоунд (Вал)) За бројач = ЛБоунд (Вал) За УБоунд (Вал) Р (УБоунд (Вал) - Бројач) = Вал (Бројач) Следећи бројач РеверсеОрдер1 = Придружи се (Р, ",") Крај функција
- У ћелији Ц1 формула ће бити
- = РеверсеОрдер1 (А1)
Погледајмо други ВБА код:
Функција РеверсеОрдер2 (Рнг Ас Ранге) Ас Стринг Дим Цоунтер Ас Лонг, Р () Ас Стринг, темп Ас Стринг Р = Сплит (Реплаце (Рнг.Валуе2, "", ""), ",") Фор Цоунтер = ЛБоунд (Р ) За (УБоунд (Р) - 1) \ 2 темп = Р (УБоунд (Р) - Цоунтер) Р (УБоунд (Р) - Цоунтер) = Р (Цоунтер) Р (Цоунтер) = темп Нект Цоунтер РеверсеОрдер2 = Јоин (Р , ",") Крај функција
- У ћелији Д1 формула ће бити
- = РеверсеОрдер2 (А1)
Како обрнути редослед колона?
У случају да имате захтев да обрнете редослед података у колони, требало би да погледате доњи код:
Суб РеверсеЦолумнОрдер () Дим вБасе Ас Ворксхеет, вРесулт Ас Ворксхеет, и Ас Лонг, к Ас Лонг Сет вБасе = Схеетс ("Схеет1") Сет вРесулт = Схеетс ("Схеет2") Апплицатион.СцреенУпдатинг = Фалсе Витх вБасе Фор и = .Ранге ("А1"). ЦуррентРегион.Ровс.Цоунт То 1 Степ -1 к = к + 1 .Ранге ("А1"). ЦуррентРегион.Ровс (и) .Цопи вРесулт.Ранге ("А" & к) Нект и Енд Витх Апплицатион.СцреенУпдатинг = Труе Енд Суб
Горњи код ће проверити податке у колони А у листу 1, а затим обрнути редослед у табели 2. Погледајте слику испод
Како добити обрнуте бројеве само из текста?
Пример: „екцел (123) тип“ је садржај ћелије
Потребан излаз: „екцел (321) савет“
У Екцелу, може бити више начина да се добије исти излаз; исто иде и проналажењу решења са ВБА УДФ -овима. За овај пример показаћемо 5 различитих начина.
Копирајте и залепите следеће кодове у стандардни модул:
Функција РеверсеНумбер1 (в као варијанта) Ас Стринг Дим иСт Ас Интегер, иЕнд Ас Интегер, сНум Ас Стринг, сТемп Ас Стринг иСт = ИнСтр (в, "(") иЕнд = ИнСтр (в, ")") Ако је иСт = 0 Или иЕнд = 0 Затим РеверсеНумбер1 = в: Излазна функција сНум = Мид (в, иСт + 1, иЕнд - иСт - 1) За и = Лен (сНум) До 1 Корак -1 сТемп = сТемп & Мид (сНум, и, 1) Следеће и РеверсеНумбер1 = Лево (в, иСт) & сТемп & Мид (в, иЕнд, 5 5) Крајња функција Функција РеверсеНумбер2 (с Ас Стринг) Ас Стринг Дим и &, т $, лн & т = с: лн = ИнСтр (с , ")") - 1 За и = ИнСтр (с, "(") + 1 За ИнСтр (с, ")") - 1 Средње (т, и, 1) = Средње (с, лн, 1) лн = лн - 1 Следећи РеверсеНумбер2 = т Крај Функција Функција РеверсеНумбер3 (ц00) ц01 = Сплит (Сплит (ц00, ")") (0), "(") (1) РеверсеНумбер3 = Реплаце (ц00, "(" & ц01 & " ) "," ("& СтрРеверсе (ц01) &") ") Функција завршетка Функција РеверсеНумбер4 (ц00) РеверсеНумбер4 = Лево (ц00, ИнСтр (ц00," (")) & СтрРеверсе (средина (лево (ц00, _ ИнСтр ( ц00, ")") - 1), ИнСтр (ц00, "(") + 1)) & Мид (ц00, ИнСтр (ц00, ")")) Крај Функција Функција РеверсеНумбер5 (с Ас Стринг ) Дим м ас Објецт Витх ЦреатеОбјецт ("ВБСцрипт.Регекп") .Глобал = Труе .Паттерн = "(\ Д*) (\ д*)" За сваки м У .Екецуте (с) РеверсеНумбер5 = РеверсеНумбер5 & м.подударања ( 0) & СтрРеверсе (м.подударања (1)) Следећи крај са сетом м = ништа Крај функција
- У ћелији Б2 формула ће бити
- = РеверсеНумбер1 (А2)
Остала 4 кода можемо тестирати следећом формулом:
1. = РеверсеНумбер2 (А2)
2. = РеверсеНумбер3 (А2)
3. = РеверсеНумбер4 (А2)
4. = РеверсеНумбер5 (А2)
Сви горе наведених 5 макро кодова пружаће исти излаз; Међутим; може се усвојити код који им највише одговара.
Како поништити садржај ћелије активне ћелије?
У случају да желите да се макро покреће само на ацтивецелл -у, а затим да обрнете садржај. Овај код неће радити на ћелији која садржи формулу.
Користићемо следећи код:
Суб Реверсе_Целл_Цонтентс () 'овај макро ће се покретати само на активној ћелији' --- Коментар ако није АцтивеЦелл.ХасФормула Затим сРав = АцтивеЦелл.Тект сНев = "" За ј = 1 То Лен (сРав) сНев = Мид (сРав, ј, 1 ) + сНев Нект ј АцтивеЦелл.Валуе = сНев Енд Иф Енд Суб
Ако је курсор на ћелији А1, која садржи „екцелтип“, горњи макро ће га претворити у „питлецке“.
Закључак: Можемо имати што више УДФ -ова за једно решење у Мицрософт Екцелу. Овај УДФ ће радити од верзије 2003. до 2013. године.
Ако вам се допадају наши блогови, поделите их са пријатељима на Фацебооку. Такође нас можете пратити на Твиттер -у и Фацебоок -у.
Волели бисмо да чујемо од вас, реците нам како можемо побољшати, допунити или иновирати наш рад и учинити га бољим за вас. Пишите нам на сајт е -поште