Како добити обрнути текст и број путем ВБА у Мицрософт Екцелу

Anonim

У Екцелу, постоје тренуци када желимо да потпуно преокренемо текст или њихов редослед са ВБА кодом. Могу постојати различити захтеви, попут издвајања обрнутог садржаја ћелије, обрнутог редоследа ћелија итд.

У овом чланку ћемо научити следеће:

  • Како добити повратни садржај ћелије?
  • Како добити све речи обрнутим редоследом из ћелије?
  • Како обрнути редослед колона?
  • Како добити обрнуте бројеве само из текста?
  • Како поништити садржај ћелије активне ћелије?

Како добити повратни садржај ћелије?

У Екцелу постоје захтеви да се обрне текст или бројеви у ћелијама, нпр. „Енглески“ на „хсилгне“

Следи снимак података пре излаза:

Следи снимак захтеваног излаза у колони Б:

Да бисмо добили горњи излаз, морамо слиједити доње кораке за покретање ВБ уређивача

  • Кликните на картицу Девелопер
  • Из групе кодова изаберите Висуал Басиц

  • Копирајте доњи код у стандардни модул
 Функција ЦомплетеРеверсе (рЦелл Ас Ранге, Оптионал ИсТект Ас Боолеан) Дим и Ас Интегер Дим СтрНевТкт Ас Стринг Дим стрОлд Ас Стринг стрОлд = Трим (рЦелл) За и = 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. године.

Ако вам се допадају наши блогови, поделите их са пријатељима на Фацебооку. Такође нас можете пратити на Твиттер -у и Фацебоок -у.

Волели бисмо да чујемо од вас, реците нам како можемо побољшати, допунити или иновирати наш рад и учинити га бољим за вас. Пишите нам на сајт е -поште