Консультация № 193051
07.04.2018, 20:32
0.00 руб.
0 63 1
Здравствуйте! Прошу помощи в следующем вопросе: Как можно выстроить двух значные числа после запятой в строке?
Есть двухзначные числа: 86,43,79,22,08,91,66,35,63,25,... ит., далее..
как ехель выстроить было в строке: 08,22,25,35,43,63,66,79,86,91,
просто набор срок большой и все перtставлять в ручную- это просто "засада"! Или может какая другая прога есть!?

Обсуждение

давно
Посетитель
401942
32
08.04.2018, 14:26
общий
Адресаты:
По файлам которые я у вас скачал. не чего не получается . Первые цифры сортируются а последнии три цифры в нижних рядах нет.
давно
Посетитель
401942
32
08.04.2018, 14:31
общий
"классно иметь и скрипт и автосортировщик" - это - одно и то же. Мы ждём от Вас другую информацию: Насколько обязательно Вам автоматическое построение графиков?
Если Вам достаточна лишь сортировка чисел из одного текст-файла в другой текст-файл, то такой vbs-скрипт я могу и сам написать.
А если Вы хотите ещё и график чтоб строился автомати, то тут придётся нам привлекать авто-запуск Excel, тк мой VBScript сумеет только отсортировать числа, вызвать Excel и заполнить его ячейки.
А дальше надо в Excel-приложении запускать его внутренний скрипт VBA, чтоб тот построил график по данным из ячеек. Я ещё не выучил VBA, нам придётся просить академика Megaloman, чтоб он сделал эту вторую часть работы. Я понятно объяснил?

- Да все понятно . да я думаю что просто хватит одного скрипта по цифрам. Нет нужды вам голову морочить . Извените.
давно
Мастер-Эксперт
259041
7459
08.04.2018, 15:45
общий
Адресаты:
Вам не за что извиняться, Вы ни в чём не виноваты. Мы пока что притираемся, ищем общий язык.
Вы спросили: "А куда прописывать имена номеров?" - которых номеров? В дистанционном общении надо стараться выражаться конкретно, чтоб Вас понимали НЕ двусмысленно. Эксперты - не телепаты.

Последний пост Вы адресовали "экспертам раздела". Программа портала разослала Ваш пост ВСЕМ многочисленным экспертам. Чтоб не беспокоить понапрасну многих людей, занятых другими работами, адресуйте пост конкретному эксперту (тогда почта отправит т-ко ему) или НЕ заполняйте поле "Кому". Тогда почта портала отправит сообщение т-ко тем, кто принял участие в Вашем мини-форуме.

Вы не сообщили Какая у Вас ОперСистема? Какой путь к папке с файлами, которые надо сортировать? Каким образом Вы хотите выбрать из множества файлов в этой папке единственный файл для текущей сортировки? Варианты :
1)Свежайший по времени-дате,
2)Из контекстного меню любого из многих файлов выбрать команду Отправить,
3)Файл для сортировки всегда имеет фиксированное имя КакоеИмя?, файлы с др именами НЕ сортируем.
4)Предложите свой вариант.
Ответьте пожалуйста на все эти вопросы. Путь к файлу копируйте из адресной строки Проводника, а не набирайте с клавиатуры во избежание ошибки.
Прикрепленные файлы:
bdddeb8e37f125ebc0c8c4cdc95be8b7.png
давно
Мастер-Эксперт
259041
7459
08.04.2018, 15:56
общий
Адресаты:
Вы писали: "Насколько мне известно, в MS Excel есть оператор конкатенации" - да, в Excel есть Макросы для написания программ, а в операциях обработки строковых типов данных (не чисел) применяется Оператор конкатенации & (склеивание) символов и строк.
давно
Мастер-Эксперт
17387
18345
08.04.2018, 16:02
общий
Адресаты:
Если поместить числа в ячейки, указав текстовый формат данных, то оператор конкатенации можно применить и к числам, как я понимаю. Впрочем, прошу извинить, этот оператор я упомянул на всякий случай: вдруг он упущен из виду.
Об авторе:
Facta loquuntur.
давно
Модератор
137394
1850
08.04.2018, 17:04
общий
08.04.2018, 17:05
Адресаты:
пришлите Ваш исходный текстовый файл (если он другой) и результат обработки
Что такое имена номеров?
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Модератор
137394
1850
08.04.2018, 17:12
общий
08.04.2018, 17:15
Адресаты:
Цитата: Гордиенко Андрей Владимирович
Насколько мне известно, в MS Excel есть оператор конкатенации
Вы правы, но загвоздка в другом, как я понимаю, чтобы применить эту операцию к ряду ячеек и получить результат в одной, надо в формуле в этой ячейке помянуть каждую ячейку, да еще и запятую после каждой. А функции типа суммы для конкатенации диапазона ячеек я не знаю. Может, я отстал, и в какой-то версии офиса она есть? А для задачи, где не задано количество объединяемых ячеек, да и в случае большого их количества, это неудобно. Можно написать свою функцию, конечно.
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Посетитель
401942
32
08.04.2018, 17:16
общий
Винда 7
давно
Посетитель
401942
32
08.04.2018, 17:22
общий
1)на планшете в блокноте пишу цифры с позиций аппаратуры видео
2) Прихожу домой копирую с блокнота планшета на комп в блокнот
3) записываю в эксель по возрастанию в каждую ячейку согласно номеру камеры(столбца)
давно
Посетитель
401942
32
08.04.2018, 17:25
общий
Зачем путь копиравать если он просто произвольный ?
болкнот может лежать на рабочем , в моих документах, ит, д....
давно
Посетитель
401942
32
08.04.2018, 17:28
общий
Цыфры двоичные от 01 до 180
давно
Посетитель
401942
32
08.04.2018, 17:51
общий
Вот файл
Прикрепленные файлы:
151c2864a4e06af2641b15331f4dc504.xlsx
давно
Модератор
137394
1850
08.04.2018, 18:07
общий
08.04.2018, 18:30
Адресаты:
Я исправил ошибку в коде. Возьмите его заново.
Кроме того, я был вынужден доработать код, так как у Вас почему-то после последнего числа в строке может стоять разделитель (запятая)/
Зачем Вы вставляете данные в Excel? Вам они надо в Excel-е именно в таком виде?
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Мастер-Эксперт
17387
18345
08.04.2018, 18:23
общий
Адресаты:
Не адресуйте свои сообщения всем экспертам раздела. Выбирайте адресата.
Об авторе:
Facta loquuntur.
давно
Мастер-Эксперт
259041
7459
08.04.2018, 19:16
общий
Адресаты:
Вы спросили: "Зачем путь копиравать если он просто произвольный ?" - для правильной работы скрипта надо указать ему документ, который надо отсортировать. Можно использовать и произвольный путь для документа, но тогда скрипт должен закрепиться в фиксированном пути, прописанном в ярлыке папки SendTo, и Вы будете из контекстного меню докума выбирать команду Отправить \ в СортирСкрипт , эта команда запустит скрипт и покажет скрипту путь к вызывателю.

Можно использовать произвольный путь и для докума и для скрипта, если они находятся в одной папке. Но если в этой папке много документов (вчерашние, позавчерашние…), то надо чтоб скрипт обработал тот докум, который Вы хотите, а не какой попало. Для этого я и предложил Вам выше 4 варианта связывания скрипта с нужным документом. А Вы не выбрали вариант. Ждём

Также я не понял, зачем Вы прислали ещё один Excel-файл? Вы же хотели записывать отсортированный результат в другой текстовый файл, верно? А Ваш Excel-файл запутывает нас, в нём есть строка:
"Вот так они должны сортироваться : 25,80,37,44,65,87,91,53,125,130,177,"
в ней после числа 80 следует мЕньшее число 37 . Это не есть сортировка по возрастанию. А что Вы тогда хотите от нас?
давно
Модератор
137394
1850
08.04.2018, 19:36
общий
08.04.2018, 19:37
Адресаты:
Вот еще вариант.
Код:
Delim = ","

Set WArg = WScript.Arguments
If WArg.Count = 0 Then
MsgBox "Скрипт запущен без аргумента." + vbCrLf + "В аргументе укажите путь к файлу" + vbCrLf + "Скрипт завершается"
WScript.Quit 1
End If

FileIn = WArg.Item(0)

Set FSO = CreateObject("Scripting.FileSystemObject")

On Error Resume Next
Set inFile = FSO.OpenTextFile(FileIn, 1)
If Err.Number <> 0 Then
MsgBox FileIn + vbCrLf + Err.Description
WScript.Quit 1
End If
On Error GoTo 0

AllTxt = inFile.ReadAll
inFile.Close

Mas = Split(AllTxt, vbCrLf)

FileOut = Replace(FileIn, FSO.GetFileName(FileIn), FSO.GetBaseName(FileIn) + ".Sort." + FSO.GetExtensionName(FileIn))

On Error Resume Next
Set inFile = FSO.OpenTextFile(FileOut, 2, True)

If Err.Number <> 0 Then
MsgBox FileOut + vbCrLf + Err.Description
WScript.Quit 1
End If
On Error GoTo 0

For Each S In Mas
S = Trim(S)
If Right(S, 1) = Delim Then S = Mid(S, 1, Len(S) - 1)
ss = Split(S, Delim)
Uss = UBound(ss)
Lss = LBound(ss)
If Not Uss = Lss Then
sout = ""
For i = Lss To Uss
iss = CInt(ss(i))
For j = i To Uss
jss = CInt(ss(j))
If jss < iss Then
stmp = ss(i)
iss = CInt(ss(j))
ss(i) = ss(j)
ss(j) = stmp
End If
Next
If Not sout = "" Then sout = sout + Delim
sout = sout + ss(i)
Next
Else
sout = S
End If
inFile.WriteLine sout
Next
inFile.Close

Пусть скрипт называется, например, Z:\Soft_In\kuku.vbs
Сделайте на рабочем столе иконку на
Wscript Z:\Soft_In\kuku.vbs
Теперь Ваш текстовый файл (например, tralala.txt) из проводника можете мышью затащить на эту иконку.
В результате получим отсортированный файл tralala.sort.txt рядом с исходным.
Можно вручную запустить этот скрипт с именем файла в параметре, например
kuku.vbs tralala.txt
Конечно, если kuku.vbs tralala.txt находятся в одной папке и она активна, иначе надо указывать полный путь
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Модератор
137394
1850
08.04.2018, 20:18
общий
08.04.2018, 20:21
Адресаты:
Вы настойчиво помещаете данные в Excel-таблицу. Не понимаю, зачем. Но хозяин- барин. Я написал для таблицы функцию, которая сортирует данные в клетке. Попробуйте. Для примера я расположил Ваши данные.

Использование функции
=SortCell(A2;",")
Здесь A2 - адрес обрабатываемой клетки.
"," - разделитель.

Если в клетке A2 значения =86,43,79,22,08,91,66,35,63,25
То результат функции 08,22,25,35,43,63,66,79,86,91

Либо, если явно передать строку
=SortCell("86,43,79,22,08,91,66,35,63,25";",")
То результат функции 08,22,25,35,43,63,66,79,86,91

Для работы надо разрешить выполнение макросов.

Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Модератор
137394
1850
09.04.2018, 14:38
общий
это ответ
Здравствуйте, alinosis14!
Предлагаю несколько вариантов решения.
1. Если Вы переносите данные в Excel и ряд чисел, например, 86,43,79,22,08,91,66,35,63,25 хранится в одной ячейке, то для получения отсортированных этих данных в другой ячейке я написал в Excel пользовательскую функцию.
Пример таблицы с Вашими данными и применением моей функции здесь.
Для работы в этой таблице надо разрешить выполнение макросов.

Пусть данные хранятся в ячейке А2. Тогда использование функции
=SortCell(A2;",")
Здесь A2 - адрес обрабатываемой ячейки и "," - разделитель.
Если в ячейке A2 значения =86,43,79,22,08,91,66,35,63,25 то результат функции в ячейке с функцией 08,22,25,35,43,63,66,79,86,91
Если исходных ячеек много, эта функция распространяется в других ячейках как обычная стандартная, например, как синус.

2. Как выяснилось, первоначально данные содержатся в текстовом файле.
Вы приводили пример этого файла.
Вот VBS-скрипт для сортировки данных прямо в текстовом документе
Сохраните файл с расширением .vbs и запускайте его на выполнение как любой другой исполнимый файл.
Для работы в скрипте надо прописать реальные пути к исходному файлу и отсортированному файлу. У меня это
FileIn = "Z:\Box_In\rfpro2.txt"
FileOut = "Z:\Box_In\rfpro2.sort.txt"
Имена исходного и отсортированного файлов могут совпадать, при этом, естественно, исходный файл будет перезаписан.

3. При необходимости многократно обрабатывать текстовые файлы удобнее создать, например, на рабочем столе иконку на исполнимый файл и затем в проводнике мышкой затаскивать на неё обрабатываемый файл.
.VBS-скрипт для такой работы здесь.
Пусть скрипт называется, например, Z:\Soft_In\kuku.vbs
Сделайте на рабочем столе иконку на
Wscript Z:\Soft_In\kuku.vbs
Теперь Ваш текстовый файл из любого места (например, tralala.txt) в проводнике можете мышью затащить на эту иконку.
В результате получим отсортированный файл tralala.sort.txt рядом с исходным.
Можно вручную запустить этот скрипт, например, каком-либо файловом менеджере или командном окне с именем файла в параметре, например
kuku.vbs tralala.txt
Конечно, если kuku.vbs tralala.txt находятся в одной папке и она активна, иначе надо указывать полный путь.

4. И, наконец, наиболее трудоёмкий, с точки зрения ручного труда, способ. Достоинство: применение исключительно стандартных инструментов Excel без какого-либо программирования. Ориентируюсь по представленному текстовому файлу
В Excel:
- Файл-Открыть-Выбрать тип: Текстовые файлы - Найти файл -Открыть
- С разделителями - Далее
- Убрать птичку "табуляция" поставить "запятая" -Далее
- Текстовый - Готово
Каждое число из текстовой строки в Excel при этом попадёт в отдельную ячейку. Теперь стандартным инструментом Excel можно их сортировать.
- Выделим A2:J52
- Данные -Сортировка
- Параметры - Столбцы
- Сортировать по - Строка 2
- Все данные похожие на числа как числа
Получили таблицу с отсортированными данными, каждое число при этом в отдельной ячейке.
Пример такой таблицы здесь.

Эту таблицу можно сохранить, если нужно, как текстовый файл с разделителями
- Excel - Файл -Сохранить как
- Тип файла CSV (разделитель - запятая)
- На предупреждение об удалении несовместимых форматов ответить -Да
У меня Excel 2010. Почему-то вместо запятых в CSV-файле получаю разделители - ;. Но любым текстовым редактором контекстно ; меняется на ,
Пример CSV-файла здесь.

Можно получить, конечно, в Excel, объединение полученных отдельных отсортированных ячеек в одной с помощью формулы, но это, ИМХО, трудоёмко и, учитывая предыдущие способы решения Вашей проблемы, не нужно.
Однако, вот пример таблицы с такими формулами.








Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Мастер-Эксперт
259041
7459
09.04.2018, 17:56
общий
Адресаты:
Эксперт Megaloman уже отправил Вам Ответ с множеством вариантов. А я тем временем писал для Вас свой скрипт. Он ещё не готов сортировать, поскольку от Вас не получены стыковочные данные (разрядность ОперСистемы, путь к папке с документом для сортировки, примерное кол-во мешающих файлов в этой папке…). Этот скрипт читает недостающие данные и записывает их в текстовый файл отчёта КонтентТкщПапки.txt .

Если Ответ товарища Megaloman не поможет Вам с сортировкой, то распакуйте мой скрипт 193051GetInfo.vbs в папку с документом для сортировки, запустите скрипт и возвратите нам созданный файл отчёта.
Прикрепленные файлы:
7d0a65d878fb257fba2ab57f7aae2ad5.zip
давно
Посетитель
401942
32
09.04.2018, 21:33
общий
Адресаты:
Добрый вечер! Извените был на работе. НУ можно сделать одну папку . а в ней ещё папки подписанные датой и в каждой отдельной папке будет один документ блокнота и скрипт.
Цифры выслал поризвольно экселе не журите......
как посмотрю ваш скрипт обязательно отпишусь.
давно
Посетитель
401942
32
09.04.2018, 21:47
общий
Адресаты:
Да обязательно попробую и отпишусь скрипт и файл.
давно
Посетитель
401942
32
09.04.2018, 21:49
общий
Адресаты:
Винда 64. Владимир Николаевич обязательно попробую и отпишусь просто после работы очень устал-напахался. Извените. обязательно отпишусь.
давно
Модератор
137394
1850
09.04.2018, 21:57
общий
Адресаты:
Извините, не понял. У Вас что, в папке куча файлов, которые надо сортировать? Я что-то упустил в постановке? При чём разрядность системы и версия Win? У меня ощущение, что я решал одну задачу, а обсуждается совсем другая
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Мастер-Эксперт
17387
18345
09.04.2018, 22:35
общий
Адресаты:

Переадресовываю Вам это сообщение, ошибочно адресованное мне:
Цитата: alinosis14
Винда 64. Владимир Николаевич обязательно попробую и отпишусь просто после работы очень устал-напахался. Извените. обязательно отпишусь.
Об авторе:
Facta loquuntur.
давно
Мастер-Эксперт
259041
7459
10.04.2018, 02:26
общий
Адресаты:
Доброе утро! Вы писали: "Извените был на работе" - я так и думал, работа - святое дело, это нормально для всех.
"можно сделать одну папку . а в ней ещё папки подписанные датой и в каждой отдельной папке будет один документ блокнота и скрипт" - не надо ничего мудрить, Вы обратились на Портал rfpro.ru , и с этого момента мудрить должны эксперты. Ваша задача : как можно точнее и конкретнее отвечать на наши учточняющие вопросы и чётко-продуманно отправлять нам свои пожелания, без эмоций.

"Цифры выслал поризвольно экселе не журите......" - Вы поставили меня в тупик. Если Вам некогда, лучше промолчите, отдохните, чем вводить нас в заблуждение.

"как посмотрю ваш скрипт обязательно отпишусь" - не торопитесь. Без суеты но с уважением мы сделаем лучше.
давно
Посетитель
401942
32
13.04.2018, 23:03
общий
Добрый вечер всем!!!! Спасибо за помощь!!!! Я выбрал себе файл и он хорошо подходит!!! уже не знаю у кого скачал просто запутался в форумах..... Но все равно всем ОГРОМНЕЙШЕЕ СПАСИБО!!!!!!!!! Тему можно закрывать Файл прикрепляю на обозрение.
Прикрепленные файлы:
f0c1053fb54bcc44eb066d08d33d7e14.xls
давно
Посетитель
401942
32
13.04.2018, 23:09
общий
Адресаты:
Все нашол чей файл! Спасибо Владимир Николаевич!!!! Огромное!!!!!!!!! Тему Можно закрывать!!!!!!
давно
Мастер-Эксперт
259041
7459
14.04.2018, 15:31
общий
Адресаты:
Вы писали: "Спасибо Владимир Николаевич!!!" - спасибо эксперту Megaloman , он и на Ваш Вопрос дал несколько вариантов решений и меня научил программировать.

Учитывая Ваше пожелание "Зачем путь копиравать если он просто произвольный ? болкнот может лежать на рабочем , в моих документах, ит, д…" я тоже написал для Вас скрипт, читающий текстовый файл Исходник.txt без привязки к пути. Лишь бы этот Исходник.txt и скрипт были в одной родитель-папке. Скрипт сортирует зачитанные числа и вписывает их в свеже-созданные файлы с именами типа 2018.04.13-22:41.txt , чтоб избавить пользователя от создания множественных отдельных папок и спасти старые отсортированные файлы от затирания новыми (у каждого файла-получателя авто-уникальное имя). Но теперь, как я понял, мой скрипт Вам больше не нужен.

"уже не знаю у кого скачал просто запутался в форумах" - у Вас есть компьютер, который умеет хорошо хранить информацию и позволяет легко найти её даже ч-з много лет. Текстовые файлики - намного меньше по объёму, чем комп-игры. Я всё храню в компе и Вам советую.
"Тему можно закрывать" - программа портала закроет Вашу тему автомати ч-з 3 суток.
давно
Мастер-Эксперт
259041
7459
14.04.2018, 15:37
общий
Адресаты:
Вы советовали: "Я бы выбрал такое решение: Создал бы ручками шаблон/бланк вылизанной отчетной формы с тестовыми данными, с готовой диаграммой, доведённой до максимальной степени совершенства" - конечно, Вы правы, надо начать с Excel-этапа от сортировки до графика и написать VBA-скрипт.

"По нажатию этой кнопочки создадим…График обновится, так как он связан с данными таблицы" - замечательно! Спасибо!

"формулу вписать в ячею программно и то непросто" - "Не вижу проблемы" а Вы попробуйте простой VBA-код:
Sub Макро2() 'учебный код для Excel2003 я изучаю в Excel2007.
Range("B2").Select 'Выделил ячею.
ActiveCell.Value = InputBox("Введи слагаемое1") 'Вписал в неё значени от пользователя.
Range("B3").Select 'Выделил соседн ячею и вписываю второе слагаемое.
ActiveCell.Value = InputBox("Введи слагаемое2")
Range("B4").Select 'Выделил ячею для формулы.
ActiveCell.Formula = "=СУММ(B2:B3)" 'вписываю простую формулу в файл.
ActiveWorkbook.SaveAs Filename:="E:\Soft\Office\VBA\Сумма 2х ячеек.xls" 'поправьте путь на свой.
MsgBox "Я вписал 2 ячеи данных, формулу и сохранил в фйл!" 'доложил об исполнении.
End Sub '=файл создан, но в его ячее B4 отображается #ИМЯ? вместо числа-суммы. При выделении этой ячеи в строке формул отображается нужное значение =СУММ(B2:B3) , но оно не обрабатывается как формула! Я копирую этот фраг, вставляю в любую соседнюю ячею ручками - и там формула работает! Что за глюк? В Excel2007 VBA-синтакс стал другим?

"Не вижу, зачем его в Excel грузить" - я тоже много лет избегал тяжёлый Excel , но случается, у кого-то на чужом компе надо быстро построить график без помощи интернета. Устанавливать для графо-построителя Маткад или Паскаль-среду долго и мало кому нужно. А наш любимый vbs НЕ умеет строить графики самостоятельно. Но зато vbs умеет передать данные для графика в Excel , который есть почти у всех. Вот я мудрю : как организовать такой алгоритм:
1)VBS создаёт Excel-докум с простейшим Макрос1 с авто-запуском и передаёт ему управление.
2)Маленький Макрос1 читает из моей флэшки текст-файл с кодом большого Макрос2 с графо-построителем, строит график и сохраняет этот докум с графиком у клиента.

Вероятно, Вы посоветуете не использовать VBS, а импортировать клиенту готовый Excel-докум с VBA и заране-построенным графиком, который при обнаружении моей флэшки зачитает с неё обновлённые данные и подкорректирует график? Или Вы знаете другой, более простой способ построить график по точкам программно?
давно
Модератор
137394
1850
14.04.2018, 21:47
общий
14.04.2018, 21:49
Адресаты:
Здорово, что Вы нашли решение с формулами, но это всё равно кусок ручного труда. Гораздо эффективнее - моё решение с организацией иконки на рабочем столе для последующей обработки файлов из любого места, затягивая этот файл на эту иконку. Я предлагаю два варианта vbs-скриптов для этого:
1. Затягиваете текстовый файл на иконку скрипта, в Excel получаем отсортированную таблицу.
2. Затягиваете текстовый файл на иконку скрипта, в Excel получаем исходные данные и отсортированную таблицу.
Сохраните файлы с расширением .vbs
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа