#excel #excel-formula #vba
#excel #excel-формула #vba
Вопрос:
Я работаю над системой, в которой определенные типы записей представлены идентификаторами вида
chr17:41222944-41222961
где значимыми являются только числовые символы, начинающиеся с 41222 ( chr17
и другие символы, я полагаю, для целей архивирования).
Мне нужно преобразовать эту строку в Excel в строку вида
chr17:g.41222944_41222961del
Есть ли встроенная функция, которую можно использовать для этого? Или мне нужно было бы написать процедуру VBA?
Комментарии:
1. «Число», начинающееся с
chr17:
, не является «числом», и мне совершенно неясно, что должен представлять «chr17:g.41222944_41222961del». Вы спрашиваете о том, как манипулировать строкой в Excel, чтобы вставитьg.
иdel
и заменить дефис подчеркиванием?2. Он представляет идентификатор в специальной системе, над которой я работаю. Там есть число — оно начинается с ‘4122294441222961’ — среди, казалось бы, произвольных текстовых символов. И да, я спрашиваю, как выполнять манипуляции со строками в Excel, в идеале используя встроенную функцию. Я создал приложение для клиента в Excel VBA несколько лет назад, и у меня нет желания делать что-либо подобное когда-либо снова.
3. Мое замешательство заключается в том, что вы не спрашиваете о форматировании числа (тот факт, что ваша строка содержит цифры, не квалифицирует ее как число, точно так же, как тот факт, что ‘zlkja; lsj’ содержит буквы, не делает ее словом). <strike> Вам следует переформулировать свой вопрос так, чтобы он касался вставки и замены содержимого в строке,</ strike> (я вижу, вы уже это сделали), но прежде чем делать это, я бы определенно сначала провел поиск; это, должно быть, одна из наиболее часто задаваемых тем в Excel и VBA.
4. Вы можете сделать это с помощью комбинации
=MID()
и=REPLACE()
в неприятной формуле, но это было бы намного проще сделать в функции VBA, которую вы могли бы просто вызвать вместо этого.
Ответ №1:
Если то, что вы хотите сделать, это поставить g. после двоеточия и заменить дефис подчеркиванием и добавить del в конце, тогда с вашей строкой в A1:
=SUBSTITUTE(REPLACE(A1,FIND(":",A1) 1,0,"g."),"-","_") amp; "del"
Ответ №2:
Вот ваша функция. Запишите в модуле VBA открытую книгу, а затем используйте в Excel по своему усмотрению
Function reformat(s As String) As String
reformat = Replace(s, "chr17:", "char17:g.") amp; "del"
End Function