Как заменить значение числа ссылкой на соответствующее имя строки - PullRequest
0 голосов
/ 20 сентября 2019

Я очень плохо знаком с Microsoft Excel и его функциями формул.Я хочу заменить значение 1-го CDS конечного значения на 2-е CDS начальное значение для всех CDS значений.Например, из приведенных ниже данных я хочу заменить 4663 на 5750;7411 с 9003 и так далее.Какова будет правильная формула для выполнения задачи?

RefSeq  region  1   283432
RefSeq  gene    3662    4663
RefSeq  mRNA    3662    4663
RefSeq  exon    3662    4663
RefSeq  CDS 3662    4663
RefSeq  gene    5750    7411
RefSeq  mRNA    5750    7411
RefSeq  exon    5750    7411
RefSeq  CDS 5750    7411
RefSeq  gene    9003    11024
RefSeq  mRNA    9003    11024
RefSeq  exon    9003    11024
RefSeq  CDS 9003    11024
RefSeq  gene    12006   12566
RefSeq  mRNA    12006   12566
RefSeq  exon    12006   12566
RefSeq  CDS 12006   12566
RefSeq  gap 14027   14125
RefSeq  gene    15035   17032
RefSeq  mRNA    15035   17032
RefSeq  exon    15035   17032
RefSeq  CDS 15035   17032
RefSeq  gene    18188   18937
RefSeq  mRNA    18188   18937
RefSeq  exon    18188   18937
RefSeq  CDS 18188   18937
RefSeq  gene    20032   21774
RefSeq  mRNA    20032   21774
RefSeq  exon    20032   21774
RefSeq  CDS 20032   21774

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Или вы можете использовать некоторую комбинацию OFFSET() и MATCH(), поэтому ячейка [C9] будет иметь формулу

=OFFSET(D3,MATCH("CDS",B3:B8,0)-1,0)

enter image description here

Вам потребуется указать «разумный» относительный диапазон для вашей функции match(), чтобы сканировать только «несколько» ячеек над текущей ячейкой CDS.Я решил посмотреть на 6 ячеек.Будьте осторожны, не просматривайте слишком много строк, так как вы найдете более одной ячейки CDS!Когда вы копируете функцию в дополнительные ячейки CDS, она будет продолжать использовать ту же относительную ссылку.

VLOOKUP() к сожалению, требуется сортировать столбец поиска по алфавиту, что здесь не так.

Результат будет выглядеть так

RefSeq  region  1   283432
RefSeq  gene    3662    4663
RefSeq  mRNA    3662    4663
RefSeq  exon    3662    4663
RefSeq  CDS 3662    4663
RefSeq  gene    5750    7411
RefSeq  mRNA    5750    7411
RefSeq  exon    5750    7411
RefSeq  CDS 4663    7411
RefSeq  gene    9003    11024
RefSeq  mRNA    9003    11024
RefSeq  exon    9003    11024
RefSeq  CDS 7411    11024
RefSeq  gene    12006   12566
RefSeq  mRNA    12006   12566
RefSeq  exon    12006   12566
RefSeq  CDS 11024   12566
RefSeq  gap 14027   14125
RefSeq  gene    15035   17032
RefSeq  mRNA    15035   17032
RefSeq  exon    15035   17032
RefSeq  CDS 12566   17032
RefSeq  gene    18188   18937
RefSeq  mRNA    18188   18937
RefSeq  exon    18188   18937
RefSeq  CDS 17032   18937
RefSeq  gene    20032   21774
RefSeq  mRNA    20032   21774
RefSeq  exon    20032   21774
RefSeq  CDS 18937   21774
0 голосов
/ 20 сентября 2019

Предположим, ваши данные находятся в столбцах A, B, C и D, как показано ниже.

example

В ячейку E2 можно ввести следующую функцию VLOOKUP и перетащить ее вниз:

=IF(B2="CDS",VLOOKUP(B2,B3:D30,2,0),D2)

Result

Затем вы можете использовать функцию копировать и вставить , чтобы перезаписать цифры в столбце D с замененными результатами в столбце E.

Логика заключается в том, чтобы использовать VLOOKUP для поиска CDS из полного диапазона в текущей строке, а VLOOKUP всегда будет возвращать первое совпадение, которое является именно тем, что вы ищете.Затем используйте функцию IF для возврата исходного значения из столбца D, если значение поиска не CDS.

Обратите внимание, что последнее значение является ошибкой #N/A, так как нетвторое значение для CDS после 21774.Если вы не хотите показывать сообщение об ошибке, попробуйте применить функцию IFERROR (с помощью которой вы сможете найти ноу-хау в Google, но сообщите мне, если вам нужна помощь с этим).

Приветствия:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...