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

Страницы: 1
Казахский язык в коде макроса
 
Всё, разобрался, спасибо!!!
Изменено: iOne - 12.01.2016 12:18:05
Казахский язык в коде макроса
 
Цитата
Hugo написал: ChrW(1200)=ұ
Спасибо. А каким образом можно узнать код других букв?
Казахский язык в коде макроса
 
К примеру, в документе макросом нужно найти казахское слово "Жұма":

Код
Sub search()
Cells.find(What:="Жұма", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
End Sub
По идее, это элементарная задача, но проблема в том, что специфическая казахская буква "ұ" не отображается в редакторе:

На первый взгляд, в этом случае поможет функция "ChrW()" и пошаговае покодовая разборка слова:
Код
ChrW(0416) & ChrW(04B1) & ChrW(043C) & ChrW(0430)

Всё бы ничего, но Excel "съедает" первые нули, превращая код в совершенно другой:
Код
ChrW(416) & ChrW(4B1) & ChrW(43C) & ChrW(430)
После чего, как следствие, ещё и ругаться начинает на встречу с неожиданными символами...
Есть какие-нибудь идеи?

p.s.
Microsoft Office Excel 2016
Отучить макросы коверкать формат ячеек
 
Любопытно, каким образом ASAP делает то же самое... Сейчас прошёлся им в одном из файлов - вообще никаких повреждений текста, при этом аккуратненько почикал всё ненужное...
Отучить макросы коверкать формат ячеек
 
Цитата
Hugo написал: Исходный файл не csv случайно?
Нет, xlsx.
Отучить макросы коверкать формат ячеек
 
Пробовал: значение "10/5" превращается не "05.окт", а в "42648" :(
Отучить макросы коверкать формат ячеек
 
Есть два вполне себе рабочих макроса:

1 (удаление заданного значения):
Код
Sub delete_numbers()
Cells.Replace What:="123", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

2 (удаление первого пробела в ячейке):
Код
Sub delete_spaces()
Dim MyCell As Range
On Error Resume Next
Selection.Cells.SpecialCells(xlCellTypeConstants, 23).Select
For Each MyCell In Selection.Cells
MyCell.Value = LTrim(MyCell.Value)
Next
On Error GoTo 0
End Sub


Проблема макроса "1": значение "10/5" в ячейке меняет на "05.окт" и т.д.
Проблема макроса "2": значение "10%" меняет на "0,1".

Каким волшебным образом можно отучить их пакостить? Настройки Excel перебрал - не помогает. Менял формат на текстовый - да, в этом случае изменений нет, но для всех ячеек изменить нельзя, а выборочно выделять ВСЕ проблемные ячейки - сам точно в этой жизни не успею, детям останется, да ещё и внукам хватит наверняка
:(
Перемещение данных определённых строк в другой столбец
 
Большое спасибо всем, задача была сделана ещё вчера, сегодня уже инициировал отчётный период (кто ж знал, что я всё успею ТАК быстро с этими вашими интернетами макросами)  :D

Спасибо вам ещё раз, ребята!  :)
Перемещение данных определённых строк в другой столбец
 
Обалдеть... И всё?

Спасибо, всё работает как я и хотел!!!
Перемещение данных определённых строк в другой столбец
 
О слоне-то я и забыл! Балбес!
Перемещение данных определённых строк в другой столбец
 
У меня на первый взгляд вполне себе тривиальная задачка, но я и сам не смог её решить, и гугл после получасового прессинга так и не смог ничем мне помочь :(

Дано: куча данных, небрежно собранных в одном-единственном столбце.
Задача: ускорить для читабельности (на носу проверки) банальным переносом однотипных данных (в моём случае - ответов) в соседний столбец. По картинкам, наверное, куда проще понять, что же мне нужно. Строки, подлежащие переносу, ВСЕГДА начинаются с нумерации (в моём случае в качестве нумерации используются буквы латинского алфавита и следующие за ними закрывающие скобки), при этом количество строк одного варианта ВСЕГДА равно 6.

Что сейчас:



Что нужно:



Помогите, пожалуйста, с макросом. Строк более 20000, плюс они разбросаны в нескольких файлах - мне так и недели не хватит на то, чтобы вручную это всё перебирать :(
Excel + ID (Присвоение ID всем строкам в соответствии с подзаголовком)
 
Что бы я делал без этой планеты  8-0
Спасибо большое, реально работает!
Excel + ID (Присвоение ID всем строкам в соответствии с подзаголовком)
 
Здравствуйте.

Есть таблица: в ней есть подзаголовки и позиции. В настоящий момент приходится ручками присваивать id каждой позиции перед тем, как грузить в программу. Хотелось бы узнать у уважаемых знатоков, есть ли способ каким-нибудь хитрым макросом автоматизировать эту рутину?

Выглядит рутина так: получаю файл, в котором ячейки от A до K объединены в подзаголовки, а под каждым из них (в обычных ячейках) указаны позиции (количество позиций всегда варьируется от нуля до трёх сотен). Присваиваю в соответствии с эталонным списком каждому подзаголовку уникальный id (эталонный список вообще-то пока на бумаге, но я для примера указал его на закладке "список id") в столбце M, после чего тупо растягиваю id от одного подзаголовка до следующего - просто чтобы было видно, какая позиция к какой группе (т.е. подзаголовку) относится. Признаться, изрядно надоело. Но ума не приложу, как это можно автоматизировать, и можно ли вообще  :sceptic:

Спасибо за внимание.
Изменено: iOne - 20.07.2015 03:47:39
Procedure too large, vba procedure 64kb error
 
The_Prist, весьма любопытный пример, спасибо!
Сейчас буду шаманить - ночь длинная :)
Procedure too large, vba procedure 64kb error
 
Цитата
Sanja написал:
при такой конструкции: Like "Апасов К*" это и Апасов Константин и Апасов Кирилл и Апасов Кужегет...Кто из них на 100% нужен? Макрос сработает на первом, которого найдет в базе
"*" - это атавизм, его уже не будет в финале, так что можно не обращать внимания.
Procedure too large, vba procedure 64kb error
 
Цитата
The_Prist написал: Ну вот наваял небольшой примерчик.
Благодарю! Сейчас посмотрю...

Цель - эти id идут дальше по "конвейеру". Экселя бы, если честно, в этой цепи не было, если бы не промежуточная сторонняя программа, способная выгружать только в xls. Так бы, конечно, всё было намного изящнее.
Procedure too large, vba procedure 64kb error
 
Записывать "на лету"? А каким образом потом с ними работать (считывать, сравнивать)?
Procedure too large, vba procedure 64kb error
 
Здравствуйте, уважаемые. Один товарищ настойчиво отправлял меня к вам, и вот я здесь.

Суть: в некоем экселевском файле УЖЕ есть куча ФИО. Задача макроса сравнить эти ФИО с записями в БД, и в случае 100% совпадения вместо каждой ФИО прописать её уникальный id (то бишь соответствующий ей ordinal). Макрос, который я показываю - лишь один из нескольких (остальные занимаются предварительной косметикой, без которой никак нельзя: тримят, убирают пустые страницы, и прочее), но Excel падает только когда из MySQL вместо пары-тройки сотен приходит пара-тройка тысяч записей.

Как выглядит макрос в Delphi (чтобы было понимание, откуда что берётся):
Скрытый текст

Как выглядит код в VBA-редакторе:
Скрытый текст

Проблема: когда пользователей было ~300 - всё было хорошо, макрос отрабатывал без единой ошибки, быстро и чётко. Но после расширения пользователей стало ~3000, и макрос выпадает с печально известной vba-ошибкой "procedure too large" :(

Как видите, я понятия не имею, каким образом можно сократить этот макрос, чтобы данная ошибка ушла и больше ко мне не возвращалась :(
Спасибо за внимание.
Удаление точки в конце строки, ... но точки проставлены не во всех строках.
 
Спасибо вам огромное!
Мой вопрос можно закрывать.
Удаление точки в конце строки, ... но точки проставлены не во всех строках.
 
Здравствуйте.

Нужно удалить точку в конце строки. Засада в том, что точка в конце есть не во всех строках, на одной строке могут находиться несколько предложений (разделённых точками, которые удалять нельзя), а длина и количество всех предложений заранее неизвестна. Есть ли какое-нибудь решение для таких случаев?



Красным - как есть.
Зелёным - как нужно.
Удалить текст по условию
 
Мда уж, ну я и олух - о банальной замене символов забыть  :oops:
У меня уже макросный рефлекс развился, по ходу. Чуть что - сразу в макросы  :|  

Спасибо за помощь!
Удалить текст по условию
 
В колонке "A" понадобилось убрать текст, находящийся в скобках, вместе с самими скобками. Текст без чёткой структуры/форматирования, т.е. внутри скобок может находиться любое количество любых символов в любом порядке. Скобки с текстом всегда находятся в конце предложения, иногда даже после знака препинания. Таблица с зелёной заливкой ("22.png"  ;)  - результат, который необходимо получить в итоге. Попробовал свои кривые руки в комбинации с одной небезызвестной надстройкой - не получилось. Посмотрел полное описание всех макросов и функций надстройки PLEX - тоже искомого в списке не нашёл  :(
Excel 2013 (x86) + макрос, корректное выделение области с данными
 
Вопрос закрыт, тему можно закрывать.
Изменено: iOne - 08.02.2013 08:31:02
Excel 2013 (x86) + макрос, корректное выделение области с данными
 
Блин, ребята, чтобы я без вас делал!


"[A1].CurrentRegion.Copy" - самое оно, благодарю!!!
Excel 2013 (x86) + макрос, корректное выделение области с данными
 
Цитата
LVL пишет:
Вы хотите копировать только данные или весь лист?
Только данные. Если бы весь лист - то и проблемы бы не было. А мне нужно именно данные (сама задача в реальности чуть сложнее, чем я тут её описал, просто я споткнулся именно на корректном выделении диапазона с данными).


Цитата
k61 пишет:
[A1].CurrentRegion.Copy
Спасибо, сейчас попробую.
Excel 2013 (x86) + макрос, корректное выделение области с данными
 
Здравствуйте.

Задача: выделить и перенести на новую страничку все данные, ничего не пропустив. Для этого открываю файл с данными и начинаю запись макроса. После этого по шагам: устанавливаю курсор в ячейку "A1" > нажимаю "Ctrl + A" (чтобы выделить вся область с данными) > копирую выделенную область в буфер > создаю в этой же книге новую страничку > устанавливаю курсор в ячейку "A1" > вставляю данные > останавливаю запись.

После проверяю получившийся макрос:

Код
    Range("A1:P105").Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Paste

Всё бы ничего, вот только Excel чётко определил и указал диапазон, а это очень плохо в моей задаче  :(  
Выходит, если в следующем файле записей будет больше, чем на 105 строк - он их просто не захватит. Как изменить код так, чтобы Excel, как говорится, немного "думал", т.е. интеллектуально определял диапазон с данными?

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



Заранее спасибо!
Страницы: 1
Наверх