Преобразование чисел / строк из одного формата в другой в Excel

#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