Как удалить ВСЕ числа из ячейки с функцией или регулярным выражением? - PullRequest
4 голосов
/ 27 августа 2010

У меня есть клетки, которые выглядят так, по одной на строку:

Даффи, Джон: «Наследие: цивилизация и евреи» - «Фанфары и хорал», «Симфонические танцы + оркестровая сюита».Бернштейн, «В ​​городе» Танцевальные эпизоды.Royal Phil./R.Williams

Lilien, Ignace 1897-1963: Songs, 1920-1935.Аня ван Вейк, меццо и Франс ван Рут, фортепиано

Хиндемит, Trauermusik.Перселл, Сказочная Королева Люкс.Россини, Струнная соната 6. Петров, Балетная сюита «Сотворение мира».Барток, румынские народные танцы Sz 56. Тартини, Концерт для флейты с оркестром Г. В. Майорова, Ленинградский оркестр старинной и современной музыки / Серов

Бизе, Верди, Массне, Пуччини: Арии из Кармен, Риголетто, Вертер, Манон Леско, Тоска, Турандот + Песни Лары, Ди Капуа и соавт.Петр Дворский, тенор с оркестром Братиславы. Ленард, также исполняющий медитацию «Кармен» и «Тайцы».Rec.Live, 10/87

Fantini, Rauch, C.Straus, Priuli, Bertali: «Фестивальная месса при Императорском дворе Вены, 1648 год» Хор Йоркшира Баха и солисты барокко + Лондон барокко Брасс / Сеймур

Винчи, Леонардо 1690-1730: Арии из Семирамиды Riconosciuta, Didone Abbandonata, La Caduta dei Decemviri, Lo Cecato Fauzo, La Festa de Bacco, Catone в Ютике.Мария Анжелес Питерс соп.wMCarraro, проводящий

Глюк, Моцарт, Бетховен, Вебер, Верди, Вагнер, Пончиелли, Масканьи, Пуччини: Арии из Альцеста, Дона Джованни, Фиделио, Оберона, Балло, Тристана, Уолкура, Зигфрида, Готтердамеронга, Готтермеронда, ДжонаТоска.Хелен Вайлдбрунн.Рек.1919-24

Я хотел бы удалить ВСЕ номера.как мне сделать это с формулой?или, может быть, просто найти и заменить на регулярное выражение?

Ответы [ 3 ]

10 голосов
/ 27 августа 2010

Как это сделать с помощью VBA ...

  1. Откройте книгу Excel и вставьте текст, который вы указали следующим образом: alt text

  2. Пусть выбраны эти строки.

  3. Нажмите «ALT + F11», чтобы открыть редактор Visual Basic.

  4. Перейдите в меню «Вставка» иОткройте модуль.

  5. Введите эту функцию:

    Sub clear()
    s = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
    For Each r In Selection
    v = r.Value
    For i = 0 To 9
    v = Replace(v, s(i), "")
    Next
    r.Value = v
    Next
    End Sub
    
  6. Нажмите зеленую кнопку воспроизведения, чтобы выполнить сценарий VBA.alt text

  7. Вернитесь к листу и посмотрите результат (не более цифр): alt text

2 голосов
/ 15 февраля 2017

Я столкнулся с подобной проблемой, но пошел другим путем, желая избежать использования VBA.Рекурсивное использование замены заменило меня, как показано ниже:

Исходные данные (в A1: An, n = целое число) ROE -1.00 P / E 0,07 -0,85 ROC-ROE 0,02 -0,03 и т. Д..

= ЗАМЕНА (ЗАМЕНА (ЗАМЕНА (ЗАМЕНА) (ЗАМЕНА (ЗАМЕНА (ЗАМЕНА (ЗАМЕНА (ЗАМЕНА (A1, "1", "", ",", ","))""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")

, который можно расширить, чтобы избавиться от "-" и десятичного индикатора "."а также "+" (если это уместно) и, наконец, лишние пробелы, использующие

= trim (substitute (substituteue (SUBSTITUTE (SUBSTITUTE (SUBSTITUTE (SUBSTITUTE)(А1, "1", ""), "0", ""), "2", ""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", ""), "-", ""), "+", ""),». "," "))

, где нижний регистр представляет сложности, добавленные на текущем шаге.

Это естественным образом отображается на весь массив путем изменения ссылки на диапазон на весь массив, который будет проанализирован (A1: An) и ввод формулы в виде массива (т. Е. Использование Ctl + Enter вместо Enter для завершения задачи).

Затем я использую len (B1), чтобы проверить, что результаты - это то, что я хочу.

Не элегантно, по общему признанию.Но может оказаться полезным упражнением для обучения студентов мыслить и кодировать «на лету».

1 голос
/ 30 июня 2011

ОБНОВЛЕНО: я случайно разместил функцию содержимого вместо замены!

Поиск и замена на Regex работает нормально, но вы можете отредактировать свой текст после слов (например, запятые, которые были до чисел и т. Д.).).

Вот функция.Шаблон просто = RegexReplace (ячейка, "\ d", "")

Function RegexReplace(ByVal text As String, _
                      ByVal replace_what As String, _
                      ByVal replace_with As String) As String

Dim RE As Object
Set RE = CreateObject("vbscript.regexp")

RE.Pattern = replace_what
RE.Global = True
RegexReplace = RE.Replace(text, replace_with)

End Function
...