Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 След.
Генератор линейных комбинаций
 
На просторах интернета давно нашел вот такой вот замечательный генератор линейных комбинаций (код в файле примере). Работает быстро, результат отличный и все вроде хорошо. Но каждый раз приходиться делать две вещи, во-первых, в первой строке указывать количесвто заполненных ячеек в этом столбце, а во-вторых, каждый раз приходиться открывать модуль с кодом и в коде указывать эти значени в константах m и n, что конечно надоедает изрядно, т.к. макросом пользуюсь часто. Можно ли поправить код и отвязать от этих значений, наверное чтобы эти числа сами высчитывались?
Функция поиска всех позиций вхождения подстроки в строку, с использованием регулярных выражений.
 
Всем добрый день! На просторах интернета нашел замечательную функцию Ocurrence (смотри прикрепленый файл). Она по регулярнолму выражению находит позицию вхождения подстроки в строку, причем третим аргументом можно задать порядковый номер вхождения. Вопрос: можно ли изменить эту функцию так, чтобы она возвращала все вхождения в одну ячейку, либо через  запятую + пробел, либо динамическим массивом? Может можно в третьем аргументе что-то поменять, либо четвертый аргумент добавить, в общем чтобы было удобно.
Изоэлектрическая точка
 
Всем добрый день! Пытаюсь сделать пользовательскую функцию для расчета изоэлектрической точки. Еле как нашел правильный способ расчетов, он здесь:
http://isoelectric.org/www_old/files/practise-isoelectric-point.html
Проблема первая, основная, как вычислить последний шаг. Нужно увеличивать pH на значение 0.01, пока значение NQ не станет <= 0.
Проблема вторая, второстепенная, тут проще, закодировать в пользовательскую функцию.
Тут люди поумнее меня, может кто поможет.
Как упорядочить порядок групп в двух надстройках на одной вкладке
 
Уважаемые форумчане, помогите пожалуйста. Сделал я значит две надстройки, пример прикладываю. Одна называется Надстройка_1, вторая - Надстройка_2. С горем пополам разобрался как поместить их на одну ленту. В первой XML-код такой:
Код
<?xml version="1.0" standalone="yes"?>
<customUI   xmlns="http://schemas.microsoft.com/office/2009/07/customui&quot;
            xmlns:z="Моё пространство имен">
    <ribbon startFromScratch="false">
        <tabs>
            <tab idQ="z:Пространство_имен"  label="Надстройка_1">
                <group idQ="z:Группа_3" label="Группа_3">
                    <button id="Кнопка_3" label="Открыть3" imageMso="AppointmentColor10" onAction="Button3_onAction"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
Во второй код следующий:
Код
<?xml version="1.0" standalone="yes"?>
<customUI   xmlns="http://schemas.microsoft.com/office/2009/07/customui&quot;
            xmlns:x="Моё пространство имен">
    <ribbon startFromScratch="false">
        <tabs>
            <tab idQ="x:Пространство_имен" label="Надстройка_2">
                <group idQ="x:Группа_1" label="Группа_1">
                    <button id="Кнопка_1" label="Открыть1" imageMso="AppointmentColor4" onAction="Button3_onAction"/>
                </group>
                <group idQ="x:Группа_2" label="Группа_2">
                    <button id="Кнопка_2" label="Открыть2" imageMso="AppointmentColor2" onAction="Button3_onAction"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
Основной вопрос следующий: как сделать так, чтобы на вкладке группы шли по парядку - группа_1, затем группа_2, за ней группа_3? Сейчас они идут в таком порядке:группа_3, группа_1, группа_2.
Второстепенный вопрос: как управляется название группы на ленте? Сейчас имя на ленте именно "Надстройка_2", почему не "Надстройка_1"? Как сделать так, чтобы было заведомо нужное имя?
Извлечь из исходной таблицы столбцы с заданными номерами
 
Есть таблица, например 4*4, нужно извлечь из нее определенные столбцы, например 1 и 3. Есть функция SelectCols, которая прекрасно это делает, но делает это если ссылаться на ячейки, например так =SelectCols(A2:E6;1;3). Однако если записать таблицу в функцию двумерного массива =Пример_массива_значений() и использовать эту функцию в формуле =SelectCols(Пример_массива_значений();1;3) то ничего не получается. Если это возможно, не мог бы кто-нибудь поправить код функции SelectCols. Пример прилагаю.
Вернуть заданное число знаков из строки текста, начиная с нескольких заданных позиций, аналог встроенной функции ПСТР (мульти_ПСТР)
 
Добрый день, уважаемые форумчане!
Не могли бы Вы написать небольшую пользовательскую функцию, аналогичную ПСТР, которая смогла бы возвращать заданное число знаков из строки текста, начиная с нескольких заданных позиций. Грубо говоря, если нужно получить символы из позиций 2,5,10,55,100,120-123, сейчас приходиться применять вот такую громоздкую конструкцию:
=ПСТР(A2;2;1)&ПСТР(A2;5;1)&ПСТР(A2;10;1)&ПСТР(A2;55;1)&ПСТР(A2;100;1)&ПСТР(A2;120;3)
а хотелось бы:
=SelectPosition(A1;2,5,10,55,100,120-123)
Или может можно это сделать как-то более просто штатными средствами, может я чего не понимаю.
Перекрывающиеся паттерны в регулярных выражениях
 
Сталкнулся сразу с двумя проблемами в регулярных выражениях и пока не пойму как мне быть. Возьмем например такую строку FFSLV и попробуем найти в ней паттерн [F]\w{2,3}[VL], то есть подстрока должна начинаться с F, потом два или три символа любые и заканчиваться на V или L. Таким образом, правильный отет должен быть три подстроки: FFSLV, FFSL и FSLV.
И тут начинаются сложности:
1. Если паттерн начинается с той же самой позиции (первого символа F), то регулярное выражение не может вернуть две подстроки с этого символа, т.е. не выходит FFSLV и FFSL, как я ни старался. Вроде в интернете пишут что такого они делать не умеют.
2.Думаю пойду дедовским способом, сначала найду [F]\w{2}[VL] а потом [F]\w{3}[VL] - опять засада, получаются только FFSL и FFSLV.
Генерация случайных, заранее предопределенных букв
 
Подскажите пожалуйста, как изменить код функции чтобы, чтобы  она выбирала между конкретными буквами, например A, C, D, E, F.
Код
Function RandUpperLettersENG(LenLetter As Integer)
     Randomize
     RandUpperLettersENG = Space(LenLetter)
     For iCount% = 1 To LenLetter
     Mid(RandUpperLettersENG, iCount%, 1) = Chr((Int(65 + (Rnd() * 26))))
     Next
End Function
Как регулярным выражение удалить все после последней двойной косой черты
 
Добрый день! Подскажите регулярное выражение. Задача такая, есть текст:
122345f//dgre//asdFSFfaa//</pre><aname="slash_BC."></a></div>
как регулярным выражением удалить то, что помечено красным.
Пользуюсь функцией RegExpReplace взятой вот здесь.
https://mister-office.pro/formuly-excel/excel-regex-replace.html?ysclid=lxg1c7m9xo41470898
Изменено: dim284 - 17.09.2024 15:09:04
Импорт текста из интернет страницы в Excel, Парсинг сайта NCBI
 
Добрый день! Проблема насущная наверное для многих, много информации есть в интернете, но для себя ничего не нашел. Единственное, что давно нашел и чем постоянно пользуюсь, это функция ТЕКСТИЗURL из надстройки VBA-Excel, но в данном случае она не работает. Проблема такая, на реальном примере: есть интернет страница, например https://www.ncbi.nlm.nih.gov/nuccore/Y19099.1 с которой нужно получить всю информацию от слова LOCUS до двойной косой черты // и поместить это в одну ячейку экселя. Грубо говоря, я ссылки могу нагенерировать по ID номерам и хотелось бы функцией подобной ТЕКСТИЗURL импортировать данные из NCBI. Неужеле нет простого решения?
Индекс комплементарности кодонов
 
Помогите автоматизировать процесс. Есть нуклеотидная последовательность в ячейке J2, нужно провести немного несложных расчетов, представленных в столбцах K, L, M и N, и в столбце N посчитать количество троек. Расчеты не сложные, но хотелось бы все расчеты сделать в одной ячейке, а не в четыре столбца. СверхФормула или пользовательская функция подойдет, но лучше первое - быстрее работает.
Из двумерного массива извлечь часть значений
 
Всем привет!
Задача такая: есть двумерный массив, записанный в виде пользовательской функции ГородаИцифры. Как сделать так, чтобы извлечь только список городов, или только список цифр? Другими словами, во что "обернуть" функцию =ГородаИцифры() чтобы получить результаты представленные в ячейках F2 и F3. Возможно ли вообще такое сделать штатными средствами эксель?
Пользовательскую функцию использовать внутри другой пользовательской функции
 
Добрый день!
Сразу скажу, что в файле примере сразу понятно, что не получается. Но попробую тут объяснить, чтобы было по правилам. С горем пополам записал двумерный массив значений (цифры и буквы) в пользовательскую функцию - такая красота, набрал пару букв, вот тебе из модуля все числа с буквами подтянулись, в виде динамического массива. Далее попробовал эту функцию использовать внутри другой тоже пользовательской функции, но что-то не задалось. В VBA вообще ничего не понимаю, подскажите пожалуйста как сделать так, чтобы все работало.
Альтернативная трасляция нуклеотидной последовательности
 
Добрый день, всем знатокам и любителям эксель! Прошу помочь переделать пользовательскую функцию перевода нуклеотидной последовательности в аминокислотную (трансляция), добавив в неё пару аргументов.
Sequence - нуклеотидная последовательность. Остальные аргументы не обязательные.
StartCodon - кодон с которого начинается трансляция
EntryStartCodon - вхождение стартового кодона в последовательность (например 2-ой, 3-й и т.д.), т.е. с него будет начинаться трансляция.
Трансляция должна заканчиваться стоп кодоном ("TAA", "TAG", "TGA"), который никаким символом не помечается.
Пример прикрепляю, в нем код функции Translation.
Подсчитать количество вхождений подстроки в массиве строк
 
Помогите придумать формулу, которая бы подсчитывала количества вхождений подстроки сразу в нескольких строках (т.е. ячейках). Пример прикрепляю. Ситуация осложняется тем, что например подстрока "AGA" в строке "KAGAGAL" встречается ДВА раза.
Найти подстроку в массиве строк и вернуть номер найденной строки
 
Коллеги, помогите написать формулу, задача такая:
Есть некий набор букв (подстрока) который нужно найти в ячейках-строках (соответственно содержащих больше букв-символов) и вернуть номер строки в которой найдена заданая для поиска подстрока.
Формулу не могу придумать, часть формулы слепил (ячейка D10), на вторую часть (с массивом) мозгов не хватает. Помогите пожалуйста. Пример прикрепляю.
ПРОСМОТРХ выдает #Н/Д
 
Подскажите пожалуйста, как с этим справиться. Задача такая: каждому значению из столбца А нужно дать хеш число. Делаю так: функцией УНИК получаю список уникальных значений, им присваиваю хеш число, а потом ПРОСМОТРХ подтягиваю хеш число обратно к большой таблице. Но ПРОСМОТРХ почему-то нескольким тысячам значений возвращает значение, а остальным пишет #Н/Д. Если провалиться в ячейку и нажать Enter по будет значение (хеш сумма), но так же тысячи раз делать не будешь.
Ссылка на файл-пример:
https://disk.yandex.ru/d/SdAMpCA5CTZwAw
Может есть какое-нибудь средство от этого? Пробовал пересчет всего листа не помогает.
"Сортировка от А до Я" не "работает", Точнее работает только по какому-то определенному количеству первых символов в ячейке
 
Добрый день, гуру экселя и любители как я!
Столкнулся с такой проблемой - сортирую значения по столбцу А, а они не сортируются. Ущипнул себя, вроде не сплю. Опять сортирую - тоже самое. Файл прикладываю. Отсортированный диапозон должен выглядеть так, как если мы его отсортируем по столбцу С.
Даже не знаю что спросить. И долго мне с этой фобией жить? У всех так или у меня эксель уникальный?
Поиск эпитопов в белках
 
Добрый день глубокоуважаемые гуру эксель, эксперты VBA. Очередной раз прошу Вас о помощи.
Задача такая: нужно найти в аминокислотной последовательности белка, который находится в одной ячейке, все эпитопы - девяти аминокислотные мотивы. В "памяти экселя", аминокислотная последовательность должна разбиваться на петиды по 9-ть аминокислот и каждый из пептидов получает некий Score по матрице. Например, в первой позиции пептида стоит аминокислота "S" имеет вес 2, во второй позиции "I" - 8, в третьей "H" - 0 и т.д. В результатах выводим пептид и через пробел его Score, если пептидов несколько, то через точку с запятой.В идеале, мне видится это в виде функции с тремя аргументами: Sequence - ссылка на ячейку с аминокислотной последовательностью; array - массив матрицы с числами, в данном случае B2:K21; Score - задается пользователем, ниже этого значения пептиды не возвращаются функцией.
Это нужно для того, чтобы в геномах патогенов, или опухолевых клетках раковых больных, искать эпитопы и нацеливать на их уничтожение иммуную систему.
Пример использования Excel для биоинформатики, Подготовка аминокислотных последовательностей для филогении
 

Все привет! Для молекулярной биологии (биоинформатики) есть множество специализиванных программ, например есть такие мощные инструменты как Geneious Prime, CLC bio, DNASTAR и многие другие, пусть и с меньшим функционалом, предназначенные для работы с последовательностями - нуклеотидными или аминокислотными. Здесь, я хочу показать, как можно использовать программу Excel для работы с последовательностями, при этом эксель не только не уступает по мощности или user friendly интерфейсу упомянутым «гигантам», но и даже превосходит их. Отчасти это сравнение неправильное, так как эти программы конкурируют между собой и, по сути, выполняют одни и теже операции (работа с плазмидами, сборка NGS-данных, визуализация геномов и т.д.), в экселе же, можно выполнять те операции, которых в принципе нет в этих программах (работать с массивами, вытаскивание информации по единичным позициям, одновременное глобальное выравнивания множества групп последовательностей и т.д.), т.е. эксель не конкурирует с ними, а только дополняет их. На мой взгляд это как раз то, что не хватает мокрым биологам, которые абсолютно не то, что умеют программировать, а даже пользоваться многочисленными программами, лежащими на GitHub (кнопочек в них нет, да и устанавливаются они как правило на Linux).

В качестве примера, попробуем построить филогенетическое дерево (родословную) золотистого стафилококка (Staphylococcus aureus) сиквенс типа 8 (ST8). Схематично этапы расчетов будут выглядеть так:

1) Получаем все гены этих штаммов, переносим их в эксель, удаляем (сортируем) идентичные последовательности.

2) Транслируем (переводим ДНК в белок, т.е. группы по три символа заменяем одним символом) и создаем список уникальных аминокислотных последовательностей.

3) Кластеризация: среди всех генов (пан-геном) необходимо найти только те гены, которые есть в каждом штамме (коровый геном). Кластеризуем последовательности, гомология которых не менее 80%.

4) Выравнивание. В итоге получаем более 600 коровых генов (т.е. 600 кластеров генов), различные по сиквенсу последовательности которых нужно выровнять между собой

 5) Возвращаем каждому геному свой выровненный белок.

6) Mask Alignment – аминокислоты, которые одинаковые в каждой позиции одного и того же кластера белков, ненужны для построения филогении, поэтому их можно и нужно удалить, тем самым сократив количество информации в более чем 10 раз.

7) Строим филогенетическое дерево или сеть и наслаждаемся полученным результатом.

Теперь немного подробнее каждый шаг:

1) Первый и последний шаг не относятся к экселю. В ГенБанке было скачано 1866 полных геномов золотистого стафилококка, определена принадлежность их к сиквенс-типам и выбрано 363 генома относящихся к ST8. Далее в эксель импортированы все гены каждого штамма (лист DataBase) (почти 973 тыс. генов).

Чтобы не хранить весь объем данных и уменьшить его, идентичные последовательности были удалены. Для этого была получена хеш-сумма каждой последовательности, массив сортирован и дубли удалены. Штатная функция «Удалить дубликаты» почему-то не работает на нуклеотидных и аминокислотных последовательностях, может они длинноваты?

2) Из нуклеотидов получаем белковые последовательности. Можно воспользоваться функцией из сообщения 9 от БМВ, за что его отдельная благодарность:

https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=129032&MID=1060215#message1060215

Аналогично нуклеотидам, чтобы не утяжелять файл, получаем хеш-сумму и удаляем дубли. Переносим уникальные сиквенсы на новый лист (хотя можно работать и на том же).

3) Кластеризация: среди всех генов (пан-геном) необходимо найти только те гены, которые есть в каждом штамме (коровый геном). Нужно кластеризовать (объединить в группу) последовательности, гомология которых не менее 80%. Самый сложный шаг. Пока пользуюсь онлайн программой:

https://toolkit.tuebingen.mpg.de/tools/mmseqs2

Результаты так себе, но быстро и просто. Как реализовать в экселе не знаю. VBA коды всех так называемых «Меры схожести строк» нашел в интернете. Пожалуй, один из самых быстрых и выдающих хорошее значение, здесь:

https://rosettacode.org/wiki/Jaro_similarity#VBA

Вероятно, наиболее близкий алгоритм здесь и кстати мера схожести строк тоже тут шустрая:

https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=95661&TITLE_SEO=95661-sravnenie-skhozhesti-teksta-dlya-raboty-s-bolshimi-spiskami

4) После кластеризации сиквенсов, оставляем только те кластеры, гены которых присутствуют в каждом геноме, т.е. не менее 363 раз (количество геномов). В итоге получаем более 600 коровых генов (т.е. 600 кластеров генов), различные по сиквенсу последовательности которых нужно выровнять между собой. Выравнивание лучше делать алгоритмом MAFF, код которой блестательно адоптировал doober, за что ему низкий поклон. Здесь ссылка на саму надстройку: https://disk.yandex.ru/d/py6SjDIZC4EiOA

А эта ссылка на программу, которую нужно скачать и распаковать на диск С, чтобы путь был такой c:\mafft-win:

https://mafft.cbrc.jp/alignment/software/windows_without_cygwin.html

скачиваем файл mafft-7.520-win64-signed.zip (версия на 18.11.2023, но может быть и более новая версия).

При вызове макроса, нужно выделить два столбца: правый столбец - сиквенсы которые нужно выровнять между собой, левый столбец содержит идентификатор, по которому MAFF объединяет последовательности для выравнивания. При этом данные выгружаются в соседний правый столбец относительно этих двух.

5) ВПР или ПРОСМОТРХ возвращаем каждому геному свой выровненный белок.

6) Mask Alignment – аминокислоты, которые одинаковые в каждой позиции одного и того же кластера белков, ненужны для построения филогении, поэтому их нужно удалить, тем самым сократив количество информации в более чем 10 раз. В данном примере если этого не сделать, то все в текстовый файл может не влезть, да и программам, которым в дальнейшем его обрабатывать будет намного сложнее. Великолепный макрос для этого написал Евгений Смирнов:

https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=161293&TITLE_SEO=161293-udalit-vse-odinakovye-simvoly_-v-kazhdoy-pozitsii-v-kazhdoy-yacheyki-po-stolbtsu-_mask-alignment&MID=1275919&result=new#message1275919

7) Строим филогенетическое дерево или сеть и наслаждаемся полученным результатом. Возьмем например бесплатную великолепную программу PHYLOViZ, она очень простая и интуитивно понятная:

https://bitbucket.org/phyloviz/phyloviz-main/downloads/

Все конечные файлы со всеми расчетами прикладываю.

Файл для программы PHYLOViZ. Архив нужно распаковать, получится папка, после открыть программу PHYLOViZ, File – Open project – папка будет в виде 4-х сцепленных шестеренок – правой кнопкой мыши Load dataset. https://disk.yandex.ru/d/xQxqZAgL7r6qpw

Исходные файлы для PHYLOViZ, полученные из Excel:

Данные в фаста формате: https://disk.yandex.ru/d/N3hxZac64g-7dw

Метаданные: https://disk.yandex.ru/d/2d6WnTWbk_sT7A

И самое главное – файл Excel: https://disk.yandex.ru/d/Rw_R8eRXwHeYIQ

Если кто-то проделает все это от начала до конца, тот настоящий биоинформатик, можете смело получать диплом!

Это лишь один из массы примеров, в котором показано что Excel способен решать задачи по биоинформатике. Придумать можно сколько угодно.

Надеюсь, никто не будет смеяться нам моими примитивными пассами над экселем. И вообще, гуру экселя, для нормальных людей написано десятки тысяч макросов, функций и формул, можно что угодны вытворять в нём, даже в игры играть, ну, когда же вы уже наконец обратите внимание на мокрых биологов? Это же, не справедливо ;)

Изменено: dim284 - 19.11.2023 12:00:31
Удалить все одинаковые символы, в каждой позиции в каждой ячейки по столбцу (Mask Alignment)
 
Добрый день! Помогите пожалуйста выполнить следующее действие: в каждой ячейке одного столбца, поочередно сравнить каждый первый (второй, третий и тд.) символы и если во всех ячейках один и тот-же символ, то удалить его.
Например, имеем две ячейки:
A1 "Мама мыла раму"
A2 "Мама пила ром-"
Остаться должно:
A1 "мыау"
A2 "пио-"
Наверное лучше макрос, которым можно было бы выделить несколько столбцов и он бы по каждому столбцу выполнил аналогичные действия.
Пример прикрепляю. Это нужно для уменьшения массива информации для построения филогенетических деревьев. Убираем все одинаковое, оставляем все отличающееся между последовательностями.
"Да не оскудеет рука дающего".  Евангелие от Матфея, глава 5, стих 7.
Поиск консенсусной последовательности
 
Добрый утро всем любителям эксель! Помогите решить следующую задачу: необходимо найти наиболее общую (консенсусную) последовательность, то есть нужно сравнить поочередно все буквы в каждой позиции нескольких ячеек и вернуть букву которая наиболее частов стречается в каждой позиции. Пример прилагаю. Если разных букв в какой-либо позиции одинаковое число, как в примере в самом конце, то можно оставить любую из них.
Наиболее длинная подстрока
 
Добрый вечер! Помогите пожалуйста с задачей: имеется массив текстовых строк, нужно найти максимально длунную подстроку среди всего массива. Пример прикрепляю.
Импорт нескольких текстовых файлов в эксель
 
Добрый день! Помогите пожалуйста подправить макрос. Пытаюсь импортировать содержимое множества текстовых файлов на лист эксель. Нашел на этом сайте замечательный нижепредставленный макрос. Только есть пару проблем:
1. При импорте пропадает первая строка из текстового файла, это главная проблема.
2. Лист должен называться "Цель", можно ли сделать просто активный лист?
Если возможно, можно объединить два макроса в один, было бы вообще замечательно.

Код
Sub OpenTxt(path)
    
    Dim rw As Long
    Dim wb As String
    
    Workbooks.OpenText FileName:= _
        path, Origin:=866, StartRow _
        :=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, _
        Space:=False, Other:=False, FieldInfo:=Array(Array(1, 3), Array(2, 1), Array( _
        3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10 _
        , 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1), _
        Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), Array( _
        23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array(28, 1)), _
        DecimalSeparator:=".", TrailingMinusNumbers:=True
      
      rw = ThisWorkbook.Sheets("Цель").Range("A1").CurrentRegion.Rows.Count + 1
      wb = ActiveWorkbook.Name
        
        Range("A1").CurrentRegion.Copy
        ThisWorkbook.Activate
        Sheets("Цель").Paste (Sheets("Цель").Cells(rw, 1))
    
    Application.CutCopyMode = False
    Workbooks(wb).Close
    
End Sub
Sub UseFileDialogOpen()

    Dim lngCount As Long
    
    Application.ScreenUpdating = False
    Application.ShowWindowsInTaskbar = False

    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = True
        .Filters.Clear
        .Filters.Add "Текстовые файлы", "*.*", 1
        .InitialFileName = ThisWorkbook.path
        .Show
        
        For lngCount = 1 To .SelectedItems.Count
            Call OpenTxt(.SelectedItems(lngCount))
        Next lngCount

    End With
    
    Application.ScreenUpdating = True
    Application.ShowWindowsInTaskbar = True

End Sub
Изменено: dim284 - 20.10.2023 12:05:41
Выравнивание аминокислотных последовательностей
 

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

Перерыл весь интернет, таких решений нет. Лучшее что смог найти – это старая надстройка XlibraryDisplay, код который открыт в редакторе Visual Basic. В ней есть какой-то макрос, закодированный на кнопке Align proteins, который впринципе это делает, но в конце его работы он зачем-то разбивает сиквенс по буквам в отдельные ячейки.

Можно ли «достать» этот макрос надстройки и переделать под функцию с двумя аргументами: ячейки с последовательностями и метод выравнивания?

Ссылка на яндекс диск с надстройкой XlibraryDisplay https://disk.yandex.ru/d/1D5FVlW1VyxaYw

Цвет шрифта по словарю_2
 
Доброго дня всем любителям Экселя! Проблема в следующем: имеется макрос "Цвет шрифта по словарю". Работает он так: на листе "Словарь" в столбец A выписываются нужные слова и раскрашиваются в необходимый пользователю цвет. Потом ячейки в которых нужно раскрасить эти слова выделяются и применяется макрос. Проблема в том, что раскрашивается полько первое вхождение буквы или слова. Не могли бы вы поменят макрос так, чтобы раскрашивались все вхождения?
Код
Sub ЦветШрифтаПоСловарю()
Application.ScreenUpdating = False
    Dim iStart As Integer
    Dim rng As Range, cell As Range, sSearchString As String, lastRow&, i&, color&
    
    Set rng = Selection
    
lastRow = Sheets("словарь").[a1000].End(xlUp).Row

For i = 1 To lastRow
If Sheets("словарь").Range("A" & i).Font.ColorIndex <> xlAutomatic Then
    color = Sheets("словарь").Range("A" & i).Font.color
Else
    color = -65536
End If
    sSearchString = Sheets("словарь").Range("A" & i).Value

    For Each cell In rng
        If cell Like "*" & sSearchString & "*" Then
            iStart = InStr(cell.Value, sSearchString)
            With cell.Characters(Start:=iStart, Length:=Len(sSearchString)).Font
                .Bold = True
                .color = color
            End With
        End If
    Next
Next
Application.ScreenUpdating = True
End Sub
Содержимое каждой ячейки в отдельный txt-файл
 
Добрый день, знатоки! Помогите настроить макрос под мои нужды. Есть код хорошего макроса, который каждую ячейку столбца сохраняет в отдельный txt-файл, а имя для файла берет с соседнего слева столбца. Пример прикрепляю.
Код
Sub Каждая_ячейка_в_txt_файл()
Dim sPath$, i&
  sPath = "D:\" & Chr(92) 'Путь к папке для сохранения файлов
  For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    Open sPath & Replace_symbols(Cells(i, 1)) & ".txt" For Output As #1
    Print #1, CStr(Cells(i, 2));
    Close #1
  Next
End Sub
 
Public Function Replace_symbols(ByVal sStr As String) As String
    Dim i As Byte
    Dim St As String
    St = "*/\:?|""""<>~"
    For i = 1 To Len(St)
        sStr = Replace(sStr, Mid(St, i, 1), "_")
    Next
    Replace_symbols = sStr
End Function

1. Хотелось чтобы сохранялись только те файлы (ячейки), которые выделены, то есть выделяем какие-то (пускай соседние) ячеки столба А и столбца В.2. Можно ли сделать так, чтобы макрос выдавал путь для сохранения файла?
В общем нужно сделать из хорошего макроса - отличный!
Радио в Эксель
 

Оправдание:

Николай Павлов предложил отличное решение, слушать радио из экселя. Некоторые люди писали, что мол зачем слушать радио в экселе, ведь в браузере можно открыть сайт радиостанции и слушать музыку сколько угодно. Так вот, я не совсем согласен, во-первых, сайт радиостанции всегда нужно искать, добавлять страницу в закладки или ещё куда-нибудь, во-вторых, иногда сайт радиостанции, или какой-нибудь интернет-страницы с множеством радиостанций не работает, в-третьих, и самое противное, вездесущая реклама. Включил интернет-радио, послушай сначала рекламу; нажал на паузу, опять плей - опять послушай рекламки. А в эксель радио как в машине - никакой рекламы!

Проблема:

Так или иначе открываешь эксель и слушай радио себе на здоровье. Но вот беда, точнее маленько раздражающее неудобство, открывать нужно именно файл с радио, так как макросы сохранены в коде страницы, а не в коде модуля. Если же их перенести в код модуля, они перестают работать :(

Вопрос к знатокам:

я обычно слушаю одну радиостанцию и нельзя ли сделать так, чтобы ссылку на "потоковое вещание" сразу заложить в код макроса и сделать два макроса - "радио старт" и "радио стоп". Нажал кнопку на ленте надстройки - уши радуются, нажал другую - гробовая тишина, птицы за окном поют.

P.S. проигрыватель МедиаПлеер особо не нужен, его можно делит.

Пример файла можно скачать отсюда: https://www.planetaexcel.ru/techniques/11/24289/

Оптимизация кодонов, Нужно написать пользовательскую функцию
 
Здравствуйте!

Файлы ТехЗадания и конечно же экселя прикладываю.
Знания в области биологии не обязательны, вдвоем и так разберемся.
Бюджет, это самое сложное, да бог его знает. Если в 1500 уложимся будет здорово.
Сразу прошу прощения если что-то не понятно, я в этом давно и мне все понятно. Видит бог я старался.
Изменено: dim284 - 21.06.2023 13:15:14
Подстчитать количество вхождений определенных символов
 
Помогите написать формулу, которая подсчитывала бы количество "ATG" в ячейке эксель. Слово в ячейке должно разбиваться как-бы по три буквы. Пример прикрепляю.
Страницы: 1 2 3 След.
Наверх