Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поменять местами текст внутри ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Поменять местами текст внутри ячейки
Marandi Дата: Четверг, 27.06.2024, 15:39 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте, уважаемые специалисты.
Прошу помочь с такой задачей.
В столбце Было в каждой ячейке идет перечисление моделей по алфавиту.
Необходимо поменять местами модели так, чтобы они не были по алфавиту, а максимально отличались.
В столбце Стало я прописала примерный итог. Он может быть любым, главное, чтобы похожие модели не стояли рядом.
Например, в ячейке A4 "HP1630, HP1631, HR2230, M8100, M8101, M9800, TM3000C, TM3010C" - HP1630, HP1631 и M8100, M8101 - не должны находится рядом.
К сообщению приложен файл: primer_kopija.xlsx (172.4 Kb)
 
Ответить
СообщениеЗдравствуйте, уважаемые специалисты.
Прошу помочь с такой задачей.
В столбце Было в каждой ячейке идет перечисление моделей по алфавиту.
Необходимо поменять местами модели так, чтобы они не были по алфавиту, а максимально отличались.
В столбце Стало я прописала примерный итог. Он может быть любым, главное, чтобы похожие модели не стояли рядом.
Например, в ячейке A4 "HP1630, HP1631, HR2230, M8100, M8101, M9800, TM3000C, TM3010C" - HP1630, HP1631 и M8100, M8101 - не должны находится рядом.

Автор - Marandi
Дата добавления - 27.06.2024 в 15:39
Pelena Дата: Четверг, 27.06.2024, 19:54 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Вариант с пользовательской функцией
К сообщению приложен файл: primer_kopija.xlsm (184.0 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Вариант с пользовательской функцией

Автор - Pelena
Дата добавления - 27.06.2024 в 19:54
Marandi Дата: Пятница, 28.06.2024, 10:39 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, огромное вам спасибо!
 
Ответить
СообщениеPelena, огромное вам спасибо!

Автор - Marandi
Дата добавления - 28.06.2024 в 10:39
Hugo Дата: Пятница, 28.06.2024, 10:48 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Я такой вариант тоже рассматривал, но тут ведь не соблюдается главное условие - "главное, чтобы похожие модели не стояли рядом."
Ставятся как попало, и меняются при каждом пересчёте...


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЯ такой вариант тоже рассматривал, но тут ведь не соблюдается главное условие - "главное, чтобы похожие модели не стояли рядом."
Ставятся как попало, и меняются при каждом пересчёте...

Автор - Hugo
Дата добавления - 28.06.2024 в 10:48
Pelena Дата: Пятница, 28.06.2024, 11:08 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Вероятность того, что случайные числа встанут рядом, если стоят рядом модели, очень мала.
Если не нужен пересчёт, Копировать/Вставить как значения


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВероятность того, что случайные числа встанут рядом, если стоят рядом модели, очень мала.
Если не нужен пересчёт, Копировать/Вставить как значения

Автор - Pelena
Дата добавления - 28.06.2024 в 11:08
Hugo Дата: Пятница, 28.06.2024, 11:16 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Может быть поменять местами типа так - 1, 5, 2, 4, 3...
Хотя разница небольшая


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеМожет быть поменять местами типа так - 1, 5, 2, 4, 3...
Хотя разница небольшая

Автор - Hugo
Дата добавления - 28.06.2024 в 11:16
NikitaDvorets Дата: Пятница, 28.06.2024, 12:17 | Сообщение № 7
Группа: Авторы
Ранг: Ветеран
Сообщений: 610
Репутация: 142 ±
Замечаний: 0% ±

Excel 2019
Цитата
Может быть поменять местами типа так - 1, 5, 2, 4, 3...


Имеет смысл - этот алгоритм снимает вопросы случайного выбора и близких кодов.
Но при четном количестве кодов трудно избавиться от близких кодов, стоящих в центре последовательности.
Пример UDF прилагается.
К сообщению приложен файл: peremeshhenie_teksta_s_maksima.xlsm (184.9 Kb)
 
Ответить
Сообщение
Цитата
Может быть поменять местами типа так - 1, 5, 2, 4, 3...


Имеет смысл - этот алгоритм снимает вопросы случайного выбора и близких кодов.
Но при четном количестве кодов трудно избавиться от близких кодов, стоящих в центре последовательности.
Пример UDF прилагается.

Автор - NikitaDvorets
Дата добавления - 28.06.2024 в 12:17
Pelena Дата: Пятница, 28.06.2024, 14:45 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
В моём макросе случайное число от 0 до 1 с большой точностью, это не целые числа. Вероятность "близких" кодов, на мой взгляд, незначительна


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВ моём макросе случайное число от 0 до 1 с большой точностью, это не целые числа. Вероятность "близких" кодов, на мой взгляд, незначительна

Автор - Pelena
Дата добавления - 28.06.2024 в 14:45
NikitaDvorets Дата: Пятница, 28.06.2024, 15:25 | Сообщение № 9
Группа: Авторы
Ранг: Ветеран
Сообщений: 610
Репутация: 142 ±
Замечаний: 0% ±

Excel 2019
Цитата
Вероятность "близких" кодов, на мой взгляд, незначительна


[offtop]
Решить этот вопрос помог бы, например, эксперимент на >100 кодов в одной ячейке. Но кто будет этим заниматься? :confused:
 
Ответить
Сообщение
Цитата
Вероятность "близких" кодов, на мой взгляд, незначительна


[offtop]
Решить этот вопрос помог бы, например, эксперимент на >100 кодов в одной ячейке. Но кто будет этим заниматься? :confused:

Автор - NikitaDvorets
Дата добавления - 28.06.2024 в 15:25
i691198 Дата: Воскресенье, 30.06.2024, 11:00 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 337
Репутация: 108 ±
Замечаний: 0% ±

Вероятность "близких" кодов, на мой взгляд, незначительна
Здравствуйте. Я тоже сначала так думал, а когда прикинул вероятность наличия хотя бы одного "соседства", то результат меня сильно удивил.
При 5 элементах вероятность 0.92, при 10 и далее до 1000 - 0.86. (погрешность не больше 1%)
Наверное будет лучше изменить код и избавиться от соседних элементов. У меня получился такой вариант.
[vba]
Код
Function Rearrange(St As String) As String
     Dim i As Integer, j As Integer, arr, Flag As Boolean, B As Integer
     arr = Split(Trim(St), ", ")
     B = UBound(arr)
     If B < 4 Then
       Rearrange = St
       Exit Function
     End If
     Randomize
     ReDim arr2(B)
     Do
       Flag = True
       'Создаём вспомогательный рандомный массив индексов элементов
       For i = 0 To B
         j = Int(Rnd * i)
         arr2(i) = arr2(j)
         arr2(j) = i
       Next i
       'Проверяем его на наличие "соседних" значений
       For i = 1 To B
         If Abs(arr2(i) - arr2(i - 1)) = 1 Then Flag = False
       Next
       'Повторяем, пока в индексном массиве не будет "соседних" значений
     Loop Until Flag
     Rearrange = arr(arr2(0))
     For i = 1 To B
       Rearrange = Rearrange & ", " & arr(arr2(i))
     Next
End Function
[/vba]
 
Ответить
Сообщение
Вероятность "близких" кодов, на мой взгляд, незначительна
Здравствуйте. Я тоже сначала так думал, а когда прикинул вероятность наличия хотя бы одного "соседства", то результат меня сильно удивил.
При 5 элементах вероятность 0.92, при 10 и далее до 1000 - 0.86. (погрешность не больше 1%)
Наверное будет лучше изменить код и избавиться от соседних элементов. У меня получился такой вариант.
[vba]
Код
Function Rearrange(St As String) As String
     Dim i As Integer, j As Integer, arr, Flag As Boolean, B As Integer
     arr = Split(Trim(St), ", ")
     B = UBound(arr)
     If B < 4 Then
       Rearrange = St
       Exit Function
     End If
     Randomize
     ReDim arr2(B)
     Do
       Flag = True
       'Создаём вспомогательный рандомный массив индексов элементов
       For i = 0 To B
         j = Int(Rnd * i)
         arr2(i) = arr2(j)
         arr2(j) = i
       Next i
       'Проверяем его на наличие "соседних" значений
       For i = 1 To B
         If Abs(arr2(i) - arr2(i - 1)) = 1 Then Flag = False
       Next
       'Повторяем, пока в индексном массиве не будет "соседних" значений
     Loop Until Flag
     Rearrange = arr(arr2(0))
     For i = 1 To B
       Rearrange = Rearrange & ", " & arr(arr2(i))
     Next
End Function
[/vba]

Автор - i691198
Дата добавления - 30.06.2024 в 11:00
i691198 Дата: Понедельник, 01.07.2024, 21:13 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 337
Репутация: 108 ±
Замечаний: 0% ±

Если кому то интересно, то для достаточно большого количества элементов вероятность "соседства" после равномерного перемешивания будет стремиться к значению 1-1/e2


Сообщение отредактировал i691198 - Понедельник, 01.07.2024, 21:15
 
Ответить
СообщениеЕсли кому то интересно, то для достаточно большого количества элементов вероятность "соседства" после равномерного перемешивания будет стремиться к значению 1-1/e2

Автор - i691198
Дата добавления - 01.07.2024 в 21:13
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!