2014-11-18 4 views
0

Я хочу отсортировать данные, но стандартная функция сортировки Excel «от A до Z» не разрезает ее. Я надеялся, что кто-то знает, как сделать заказ, который может удовлетворить мои потребности. Вот пример:Сортировка по фрагменту текстовой строки

chrPos  count 
chr1_10000598 10 
chr1_10000647 10 
chr1_10001370 30 
chr1_10001390 30 
chr1_10001392 30 
chr1_10001414 30 
chr1_10001418 30 
chr1_10001473 10 
chr1_10001505 10 
chr1_10001516 20 
chr1_1000156 30 

Как вы можете видеть, что последняя строка неуместна при использовании встроенной функции сортировки, то это должно быть первой строкой не последний здесь. Я думаю, что добавление второго слоя сортировки к трюку, но этот слой придется сортировать по восходящему значению на основе числа, которое следует за подчеркиванием.

Любые идеи? Возможно, это будет проще с R?

Изменить, чтобы добавить детали из комментариев:

Сортировка по возноситься на цифровой части после подчеркиванием, в порядке возрастания на CHR цифровой части (работает от 1 до 22 как включительно), а затем chrM_, chrX_ и chrY_ в этом порядке (также с их числовыми частями, отсортированными по возрастанию).

Числовая деталь после подчеркивания может составлять до 8 цифр.

+0

Я не понимаю, почему третий, но что-то подобное (чтобы создать ключ сортировки в отдельном столбце) может помочь: '= VALUE (RIGHT (A2,6) & REPT (« 0 », 13-LEN (A2))) ' – pnuts

+0

К сожалению, я имел в виду прежде всего, а не третий. В основном возрастающее значение после подчеркивания. Я забыл упомянуть, что chr # не является постоянным ... т. Е. Этот список идет от chr1 до chr22, это биоданные. – Nitro

+0

Это лучше! Вы пробовали и не включали '&'? Или вы хотите, чтобы числовая сортировка находилась в номере chr? – pnuts

ответ

0

Предполагая chrPos в Columna, пожалуйста, попробуйте в хелперов колонке:

=IF(FIND("_",A1)=5,CHAR(64+MID(A1,4,1)),CHAR(64+MID(A1,4,2)))&REPT("0",8-LEN(A1)+FIND("_",A1))&MID(A1,FIND("_",A1)+1,8) 

ИЛИ, дополнительные требования, как указано в комментариях:

=IF(MID(A1,4,1)="M","W",IF(MID(A1,4,1)="X","X",IF(MID(A1,4,1)="Y","Y",IF(FIND("_",A1)=5,CHAR(64+MID(A1,4,1)),CHAR(64+MID(A1,4,2))))))&REPT("0",9-LEN(A1)+FIND("_",A1))&MID(A1,FIND("_",A1)+1,9) 

затем выберите столбец хелперов, Копировать, Вставить Специальный, Значения сверху и использовать для сортировки.

+0

Привет, спасибо, это очень близко! Он отлично работает для всех экземпляров, когда после подчеркивания имеется 8 чисел, но ошибки, когда есть 9 номеров, подкрепляют подчеркивание. К сожалению, я не показывал экземпляров 9 номеров в том, что я разместил, но это в моем наборе данных. Также есть ошибка в 3 случаях, если chrM, chrX и chrY. Еще раз спасибо за помощь, которую я никогда не смогу сделать ... – Nitro

+0

О, боже мой! Я спросил, что является максимальным, и вы написали «финиш в chr22_99999999». Итак, есть проблема (что?) С 'chr13 _.....'? Что такое 'chrX' и' chrY' - я думал, что их было не более 22? – pnuts

+0

Приношу свои извинения. Есть chr1 через chr22 и chrM, chrY и chrX. Затем после символа подчеркивания стоит до 9 символов. Вот несколько скриншотов, которые захватывают оба этих экземпляра ошибок: http://imgur.com/SnCddcD,MnGq4ok – Nitro

Смежные вопросы