Страницы: 1 2 След.
RSS
Замена русских букв латинскими случайным образом
 
Добрый день, форумчане!
Подскажите, пожалуйста, макрос, который случайным образом заменял бы русские буквы на схожие латинские, но не сразу все.
К примеру, в слове «привет» может заменить сразу «р» и «е». А может только «р» или же только «е». Надеюсь, понятно объяснил.
Изменено: vahr - 24.06.2017 17:41:46
 
Делаете проверку в слове на эти буквы, видимо с учетом регистра, добавляете в массив, рандомите цифру от 1 до количества полученных букв, в цикле от 1 до этого рандомного числа рандомом достаёте букву и заменяете её, удаляя её из массива.
 
kavaka08, я бы не писал сюда, если бы не был на «Вы» с VBA.

Вот макрос от пользователя Alex_ST
Код
Sub RUS_Chr()   
  Dim LATChr$: LATChr = "CcEeTOopPAaHKkXxBM"   
  Dim RUSChr$: RUSChr = "СсЕеТОорРАаНКкХхВМ"   
  Dim i%, iSht As Worksheet   
  For Each iSht In ThisWorkbook.Sheets   
     For i = 1 To Len(LATChr)   
        iSht.UsedRange.Replace _   
              What:=Mid(LATChr, i, 1), _   
              Replacement:=Mid(RUSChr, i, 1), _   
              LookAt:=xlPart, _   
              SearchOrder:=xlByRows, MatchCase:=True   
     Next i   
  Next iSht   
End Sub


Можно ли его как-то преобразовать, чтобы подходил под моё описание?
Изменено: vahr - 25.06.2017 07:38:47
 
А вам нужна макрофункция (чтобы, скажем, применять её как функцию листа к ячейкам)? Причем рандом должен быть волатильным (то есть всегда заново символы будут подменяться)?
Либо вам нужна процедура, которая именно только при своём запуске, да ещё и, скажем, для указанного диапазона ячеек только, - заменит символы?
 
Цитата
AndreTM написал:
вам нужна процедура, которая именно только при своём запуске, да ещё и, скажем, для указанного диапазона ячеек только, - заменит символы
Верно
Изменено: vahr - 24.06.2017 19:02:39
 
Уж не антиплагиат ли Вы пытаетесь пройти?
Если "да", то он такое распознает )
 
Нет, что Вы. Ни в коем случае))
 
А если честно?
Если "да", то могу подсказать... а если "нет", то тогда покидаю тему))
 
Честно - нет :)
 
Но все равно тогда объясните, зачем именно вам нужны такие подмены?
Возможно, сообщество более полно подскажет (и покажет) правильные пути решения.
А то ведь, может, вы страдаете тем, что макросами в Excel меняете текст из Word. который потом рассылается Outlook  :D  
 
Задача:Сделать максимальное количество вариантов видимых одинаково, (читаемых одинаково), но по кодировке можно менять сколько угодно раз через рус лат буквы.

пример: слово ТЕКСТ имеет порядка 15 вариантов написания: текст, Текст, тЕкст, теКст, текСт, тексТ, ТЕкст, ТеКст и т.д.
Капсом писал латинский шрифт, чтобы наглядно было видно.


P.S. В универе задачку задали по информатике ;)  
Изменено: vahr - 24.06.2017 20:15:25
 
Цитата
vahr написал:
P.S. В универе задачку задали по информатике
Могу понять, если вы не можете разобраться в алгоритме решения, а вы просто vba не знаете.
Раз задали такую задачу в экселе, то должны были преподавать.
А потом будете писать просьбы о помощи в решении заданий при устройстве на работу?
 
kavaka08, вот зачем Вы так?
Я тоже когда учился (и сейчас продолжаю учиться) задавал разные вопросы, в том числе и те, которые демонстрировали мои незнания.
Ничего страшного!
vahr, Вам может следует показать вид того, что должно получиться в Excel.
Ведь не очень сложно сделать перебор последовательно по символам, а потом по комбинациям.
 
kavaka08, я конкретно написал, в чем нуждаюсь. И я с самого начала дал понять, что не разбираюсь в VBA...
Не хочу грубить, но если Вы не знаете, что написать по теме, тогда лучше помолчите.
 
vahr, не нужно указывать, кому молчать, а кому писать.
 
Некоторый материал на тему:
ссылка 1
ссылка 2
 
Юрий М, Я это прекрасно понимаю. Но что поделать, если пишут не по теме...

p.s. я не указывал, а дал совет.
Изменено: vahr - 24.06.2017 21:37:36
 
Kirill Gureev,благодарю!
 
А ваш преподаватель точно уверен в том,что его комп выдержит генерацию ВСЕХ вариантов?

Создаётся впечатление, что препод,придумавший задачу вывести в Excel (а не, например, посчитать количество  возможных замен) - аспирант на полставки.
Посчитайте хотя бы количество вариантов для фразы "РАНО ОХРАНЕ СВЕТА ВМЕСТО КРЕСТА" (ладно хоть, не "охранка Светы"  :) )

Просто ведь: =2^27-1... с этим не то что Excel - не каждая СУБД справится. Особенно с такой бессмыслицей в постановке задачи... Можете, кстати, данный пост продемонстрировать преподу в качестве решения. Если умный - поймёт, если упёртый - недолго и написать макрос, который ему комп повесит. Только условием - будет именно использование именно этой фразы :)
Изменено: AndreTM - 24.06.2017 22:08:37
 
AndreTM, пожалуй, Вы правы. Я завтра уточню у него, корректно ли условие задачи, в чем я уже сомневаюсь...
Цитата
Посчитайте хотя бы количество вариантов для фразы "РАНО ОХРАНЕ СВЕТА ВМЕСТО КРЕСТА" (ладно хоть, не "охранка Светы"   )
Значит нужно задать количество выводимых вариантов.
 
Цитата
vahr написал:
нужно задать количество выводимых вариантов
Если это означает "вывести не более N вариантов" - то это одно.
Если же "посчитать количество возможных вариантов и предупредить, что "ми-и-и-и-ллиио-о-о-он йа-а-а-а вывводи-и-и-и-ить бу-у-у-ду до-о-о-о-лго" - это другое.
:)  
 
Мнда... я тоже думал о том, что вариантов будет масса.... и как их выводить... куда? на этот же лист? псоел текущего текста?
А может заменять существующий, тогда, собственно, получится вариант со всеми заменнёнными символами и всё.
 
AndreTM, Вы были правы))
Препод не стал долго спорить, сказал сделать Макс количество возможных вариантов не более 1000.

Цитата
AndreTM написал:
Если это означает "вывести не более N вариантов" - то это одно.
Если же "посчитать количество возможных вариантов и предупредить, что "ми-и-и-и-ллиио-о-о-он йа-а-а-а вывводи-и-и-и-ить бу-у-у-ду до-о-о-о-лго" - это другое.
Первое :D
Цитата
Kirill Gureev написал:
Мнда... я тоже думал о том, что вариантов будет масса.... и как их выводить... куда? на этот же лист? после текущего текста?
А может заменять существующий, тогда, собственно, получится вариант со всеми заменёнными символами и всё.
Задаем лимит не более 1000 вариантов. Вбиваем нужное нам предложение в ячейку А1, в ячейку B1 вбиваем количество вариантов, которое мы хотим. Запускаем макрос, и он выводит варианты в ячейки, начиная с А2 по Аn. Все действия на текущем листе.
Изменено: vahr - 25.06.2017 07:35:34
 
Ну так начните его делать хотя бы, покажите, что получается...  :)

Кстати, дам совет сразу (хотя это расширяет задачу): выводить не только сам вариант в ячейку Ai, но ещё и количество/список замененных символов в Bi, чтобы было наглядно видно, что именно произошло в данной строке. Можно было бы и добраться до того, чтобы цветом выделять измененное, но это уже высокие материи.
 
Эти пару дней мучил макрос, но моих знаний недостаточно, либо не хватает смекалки, как это сделать.
Вот попробовал счетчик букв сделать, которые можно заменить. Считать-то он считает, да только неправильно...
Код
Sub RUS_Chr()
  Dim LATChr$: LATChr = "CcEeTOopPAaHKkXxBM06"
  Dim RUSChr$: RUSChr = "СсЕеТОорРАаНКкХхВМОб"
  Dim i%, iCell As Range
  Dim k As Integer
   k = 0
      For Each iCell In ActiveSheet.Range("A1")
        For i = 1 To Len(RUSChr)
        With iCell
           If .Value Like "*" & Mid(RUSChr, i, 1) & "*" Then
           k = k + 1
           End If
        End With
        Next i
      Next iCell
   Cells(10, 1) = k
   End Sub
Еще вопрос. Не могли бы Вы объяснить роль функции Len, пожалуйста?  
Изменено: vahr - 27.06.2017 07:51:20
 
чувак рекламу вконтакте постит в комментах... боты вконтача реже банят если буквы разные
 
KOLLIAK, Вы на каком языке это написали? :)
 
Доброго всем, почитал, посмеялся, возник вопрос ради спортивного интереса - кто даст макрос протестить ))), который комп вешает? без повреждений, просто хочу повесить, и ознакомиться с таким макросом. любопытно стало.
Инженер не тот, кто все знает, а тот кто знает где найти ответ.
 
Irbis_evs,  а напишите сами )))
Скрытый текст
 
AndreTM, хорошая идея, про фориулы, думаю если к примеру поставить вычисление Пи деленое на экспоненту копированное во все ячейки листа, а может и создание энного количества листов, то результат получится. Особенно на книге открытой через getобъект в фоновом режиме.. А вот с файломи, эт уже следы, кгторые придется убитать
))))))
Инженер не тот, кто все знает, а тот кто знает где найти ответ.
Страницы: 1 2 След.
Наверх