Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Перевернуть текст и заменить буквы - реверс-комплемент
 
Помогите написать ещё одну функцию - назавем её реверс-комплемент (ReverseComplement). Нужно текст содержащийся в ячейке прочитать в обратном направлении и заменить в нем все буквы С на G, G на C, A на T и T на A.
Возможно понадобится функция реверс:
Код
Function dhReverseText(strText As String) As String
Dim i As Integer

For i = Len(strText) To 1 Step -1
dhReverseText = dhReverseText & Mid(strText, i, 1)
Next i
End Function

Сейчас я пользуюсь ей, а потом с помощью ПОДСТАВИТЬ меняю поочередно буквы, но это долго и много лишних ячеек. Пример прикрепляю.
Правда со вчерашнего дня хороший человек по имени БМВ подсказал более простой вариант:
Код
Function strAmino(strNukle As String) As String
Dim i As Integer, rez As String
For i = 1 To Len(strNukle) Step 1
    Select Case Mid(strNukle, i, 1)
        Case "G": rez = rez & "C"
        Case "C": rez = rez & "G"
        Case "T": rez = rez & "A"
        Case "A": rez = rez & "T"
    End Select
 Next i
strAmino = rez
End Function

но объединить эти две функции я не могу. Подскажите пожалуйста, может слепить эти функции в одну или, получается второй вопрос, можно ли какой-нибудь командой запускать две функции поочереди, как в случае макросов - макрос для объединения макросов.
 
Здравствуйте. Вот посмотрите:
Ещё одно пишите Option Explicit в самом начале кода, очень помогает
Код
Function strAmino(strNukle As String) As String
    Dim i As Integer, rez1 As String, rez2 As String
    For i = 1 To Len(strNukle) Step 1
        Select Case Mid(strNukle, i, 1)
            Case "G": rez1 = rez1 & "C"
            Case "C": rez1 = rez1 & "G"
            Case "T": rez1 = rez1 & "A"
            Case "A": rez1 = rez1 & "T"
        End Select
    Next i
    For i = Len(rez1) To 1 Step -1
        rez2 = rez2 & Mid(rez1, i, 1)
    Next i
strAmino = rez2
End Function

 
Код
Function ReverseText(strText As String) As String
  ReverseText = StrReverse(strText)
  ReverseText = Replace(ReverseText, "A", "R")
  ReverseText = Replace(ReverseText, "C", "Y")
  ReverseText = Replace(ReverseText, "T", "A")
  ReverseText = Replace(ReverseText, "G", "C")
  ReverseText = Replace(ReverseText, "R", "T")
  ReverseText = Replace(ReverseText, "Y", "G")
End Function
 
Спасибо DANICOLA и Kuzmich, всё прекрасно работает!
Страницы: 1
Читают тему (гостей: 1)
Наверх