Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Копирование кода макроса Excel (с русскими словами) в документ Word
 
Чтобы не терялись русские слова - лучше всего провести экспорт макроса. На модуле с макросом нажмите правой клавишей мыши, выберите пункт Export File. Укажите где сохранить и имя файла. Сохранится файл с расширением .bas. Которые потом, при необходимости можно будет импортировать где угодно в Excel.
Удаление части текста в ячейках всего столбца
 
RAN, А не будет ли быстрее, если все данные в массив загнать, затем в массиве поменять значения и вывести их обратно на лист? Как мне кажется, должно работать быстрее, чем перебор ячеек. Или я не прав?

Код
Sub zamena()
    Dim arr, i&, j&
    Dim ar1()
    arr = Array("БУЛ.", "УЛ.", "ПР.", "АЛ.")
    ar1() = Range("C2", ActiveSheet.Range("C2").End(xlDown)).Value
    For i = 1 To UBound(ar1)
        For j = LBound(arr) To UBound(arr)
            ar1(i, 1) = Replace(ar1(i, 1), arr(j), "")
        Next
    Next
    ActiveSheet.Range("C2").Resize(UBound(ar1), 1) = ar1
End Sub

 
Изменено: ASKer_mk - 29 Янв 2015 17:22:34
Из второго столбца получить все соответствия значению первого столбца, оптимизировать вычисления
 
Приложите файл пример, пожалуйста, в котором будет указано как есть сейчас и как должно быть, а то не совсем понятно.
Подбор значений для заполнения реквизита формы, Прошу совета как организовать подбор
 
А если перед обработкой данных сверить введенные пользователями данные с теми, которые хранятся в справочниках и если не правильно что-то введено выдавать сообщение об ошибке и с указанием в каком объекте не правильно введены данные. Или в listbox записать только необходимые Вам данные, а пользователь просто выбирает необходимое значение.
Как создать лист по шаблону с областью значений?
 
или в макросе используйте при копии диапазона к примеру так:

Код
Range("A1:A10").Value = Range("B1:B10").Value
тогда скопируются только значения, без формул. Вместо указанных диапазонов подставьте свои с указаниями листов откуда и куда копировать.
также у Вас в формулах на листе "Табель" не учитывается время обеденного перерыва, или он не предусмотрен. Просто предупреждаю.
Изменено: ASKer_mk - 2 Дек 2014 12:04:57
Состыковать заказы с платежами с помощью макроса
 
Да, но этого не указано в файле. Также в файле не указано платеж от какого контрагента поступает... По-моему, тяжеловато продумывать логику для сортировки платежей не известно от кого, только по подходящим суммам, да и суммы эти могут не подходить, т.к. кто-то платит с авансом за следующую поставку, у кого-то заказ меньше, у кого-то больше. Это больше похоже на гадание. А вдруг повезет...
Вот в чем основная проблема.
Как сохранить макрос навсегда?
 
Цитата
Rochas пишет: Просто ужасно надоело......
Так много макросов или часто офис переустанавливается? ;-) Вопрос оффтопный и риторический ответу не подлежит
Изменено: ASKer_mk - 25 Ноя 2014 23:31:33
Как сохранить макрос навсегда?
 
Посмотрите пост № 4 от JayBhagavan, наиболее легкий вариант, как мне кажется.
Записать макрос в персональную книгу макросов и оттуда назначать кнопку. А чтобы макрос не потерялся при переустановке экселя или ОС, его лучше всего экспортировать и хранить в виде файлика где-то
Ручной пересчет одного листа, вся книга - авто пересчет
 
Sanja,а подскажите, пожалуйста, интересно для себя, если в модуль листа вписать Application.Calculation = xlCalculationManual не сработает?
В смысле, если запретить пересчет только на этом листе
Изменено: ASKer_mk - 25 Ноя 2014 15:30:05
Как перевести 25:50:00 (часы) в 1 сут 1 час. 50 мин.
 
Можно попробовать так:
Код
=ДЕНЬ(A1)&" сут. "&ЧАС(A1)&" час. "&МИНУТЫ(A1)&" мин. "&СЕКУНДЫ(A1)&" сек." 
пока писал уже ответили :)
Изменено: ASKer_mk - 24 Ноя 2014 12:25:43
Пользовательская форма для выбора значения
 
получите, в том же макросе добавьте строку:
Код
...
.Range(Rng.Address).Value = Znach
with activecell.font
   .size=10
   .bold=true
   .italic=true
   .underline=xlUnderlineStyleSingle
   .name="Calibri"
end with
...
Изменено: ASKer_mk - 11 Ноя 2014 16:37:06
Как можно подсчитать сумму в ячейках...
 
А вложение?
Копия массива, VBA
 
V, объясните, пожалуйста смысл этой строки, а то не до конца понятен принцип действия
Код
 ActiveSheet.Range("B7").Resize(Ubound(arr1),Ubound(arr1,2))=arr1
Смысл до Ubound(arr1,2) понятен резервируется поле на листе, начиная с ячейки В7, высотой в "длинну" массива, а дальше что имеется в виду.
Спасибо.
Копия массива, VBA
 
Чуть поменял код, ячейки оставил Ваши
Код
Sub mas()
Dim arr(), arr1()
    arr() = Range("A7:B9").Value
    ReDim arr1(1 To UBound(arr), 1 To 2)
    For i = 1 To UBound(arr)
        For j = 1 To 2
            arr1(i, j) = arr(i, j)
        Next
    Next
    ActiveSheet.Range("A15").Resize(UBound(arr1), 2) = arr1
End Sub
 
Оптимизировать список работников
 
На работе не могу на этот ресурс зайти, порезан инет, поэтому не могу посмотреть
Оптимизировать список работников
 
Приложите пример на несколько сотрудников, для наглядности, чтобы было понятно как и что отображается в таблице
Оптимизировать список работников
 
Может так:

Код
Sub videlenie()
Dim lr As Integer
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To lr Step 2
        For j = 1 To 6
            Cells(i, j).Interior.Color = RGB(217, 217, 217)
        Next
    Next
 End Sub
Выделяет через одну строку серым цветом, начинается со второй строки потому что первая строка это заглавие таблицы. Выделяет только столбцы A-F
Не подойдет, не правильно прочитал задание.
Изменено: ASKer_mk - 23 Окт 2014 17:46:49
Удаление строк по заданному условию (кратность к опреденному числу)
 
А может проще будет не userform, а задать кратность переменной, как предлагал кто-то раньше и задать эту переменную через inputbox?
Макрос: фильтрация и удаление строк
 
Юрий М,Извините, не посмотрел файл, предложил просто как вариант.
Макрос: фильтрация и удаление строк
 
можно простым макросом перебрать эти данные и удалить строки

Код
Sub deleting()
Dim lr As Integer
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To lr
        For j = 17 To 26
1:          If Cells(i, j).Value = "error" Then
                Rows(i).EntireRow.Delete
                GoTo 1
            End If
        Next
    Next
End Sub
тогда пустых строк не будет, их удалит.
Посчитать количество ночных часов!
 
Можно макросом попробовать, интересно было работать с форматами, раньше не встречалось...
Код
Sub night()
Dim n_h As Date, lr As Integer

    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To lr
    n_h = "0:00:00"
        For j = 2 To 32
            If Format(Cells(i, j), "long time") = "22:00:00" Then n_h = n_h + "8:00:00"
            If Format(Cells(i, j), "long time") = "22:30:00" Then n_h = n_h + "7:30:00"
            If Format(Cells(i, j), "long time") = "23:00:00" Then n_h = n_h + "7:00:00"
            If Format(Cells(i, j), "long time") = "23:30:00" Then n_h = n_h + "6:30:00"
            If Format(Cells(i, j), "long time") = "0:00:00" Then n_h = n_h + "6:00:00"
            If Format(Cells(i, j), "long time") = "0:30:00" Then n_h = n_h + "5:30:00"
            If Format(Cells(i, j), "long time") = "1:00:00" Then n_h = n_h + "5:00:00"
            If Format(Cells(i, j), "long time") = "1:30:00" Then n_h = n_h + "4:30:00"
            If Format(Cells(i, j), "long time") = "2:00:00" Then n_h = n_h + "4:00:00"
            If Format(Cells(i, j), "long time") = "2:30:00" Then n_h = n_h + "3:30:00"
            If Format(Cells(i, j), "long time") = "3:00:00" Then n_h = n_h + "3:00:00"
            If Format(Cells(i, j), "long time") = "3:30:00" Then n_h = n_h + "2:30:00"
            If Format(Cells(i, j), "long time") = "4:00:00" Then n_h = n_h + "2:00:00"
            If Format(Cells(i, j), "long time") = "4:30:00" Then n_h = n_h + "1:30:00"
            If Format(Cells(i, j), "long time") = "5:00:00" Then n_h = n_h + "1:00:00"
            If Format(Cells(i, j), "long time") = "5:30:00" Then n_h = n_h + "0:30:00"
        Next
    Cells(i, 33) = n_h
    Next
    Columns(33).NumberFormat = "[h]:mm:ss"
End Sub 
Возможно написано чересчур громоздко, но только учусь.
Изменено: ASKer_mk - 6 Окт 2014 17:48:12
Объединить данные из многих файлов в один
 
Честно говоря, из Вашего объяснения и файла примера мало что понятно...
Откуда данные берутся в листе "Как нужно", откуда там взялась цифра 11 в продолжительности, как что считается и т.д.
Скрытие данных в ячейке по определённым условиям., Необходимо скрыть все значения равные нулю во всех ячейках
 
Попробовать функцией ЕСЛИ, к примеру: =ЕСЛИ(A1="";"";A1). Т.е. если в ячейке А1 не будет никакого значения, то ячейка в которой стоит формула будет пустой, если стоит какое=то значение - то в ячейку формулі попадет значение ячейки А1.
Если я правильно понял условие задачи.
При транспозиции массива возникает ошибка 13 Type mismatch
 
Спасибо Hugo за разъяснения относительно transpose. Выкрутился созданием дополнительного массива и при помощи него изменил размерность основного.
Всем спасибо за помощь.
При транспозиции массива возникает ошибка 13 Type mismatch
 
Цитата
Hugo пишет:
Помнится transpose не работало с массивами более 65к строк. А на 2000 экселе уже и на паре тысяч загибалось.
Жаль  :(  То есть, как вариант попробовать создавать дополнительный массив с размерностью обратной исходному массиву и циклом перекидывать туда значения? Как Вы думаете ошибка исчезнет?
А затем обратно циклом вернуть к необходимому значению.
Изменено: ASKer_mk - 19 Сен 2014 11:51:28
При транспозиции массива возникает ошибка 13 Type mismatch
 
Добрый день, уважаемые форумчане.
Во время транспозиции массива с данными возникает ошибка Runtime error 13 Type mismatch. Не могу понять в чем причина, искал во многих источниках все равно, не могу понять причину и как ее излечить. В VBA новичок, поэтому и прошу помощи.
При чем макрос нормально отрабатывает если количество записей в массиве до 40-50К, как только их становится больше 60К возникает эта ошибка. Подозреваю что где-то в размерностях натупил, но найти не могу.

Ошибка возникает в этом месте в коде - строка № 80.

Код
        x = UBound(test2)
            test2 = Application.Transpose(test2)
            ReDim Preserve test2(1 To 3, 1 To x - them + 1)
            test2 = Application.Transpose(test2)
            test2(UBound(test2), 1) = Empty
            test2(UBound(test2), 2) = Empty
            test2(UBound(test2), 3) = Empty
    Loop

 
Подскажите, пожалуйста, в чем ошибся.
Выбор значений из массива учитывая условия
 
Спасибо, буду учиться :)
Выбор значений из массива учитывая условия
 
Во вложении макрос для вашей задачи, написал как смог - не судите строго, но работает. Проверить можно на листе2. Единственное, не задавал заголовки для таблицы результатов, но данные выгружаются в указанный Вами диапазон.

Но лучше, пусть кто-то из профессионалов проверит... Я только учусь.
Изменено: ASKer_mk - 15 Сен 2014 21:42:56
Выбор значений из массива учитывая условия
 
Судя по условию которое задано в таблице Вам надо выбрать все значения ARC-VIP и KIE-VIP, но в результате в Окончательной таблице у Вас стоят совсем другие данные...
Уточните, что именно должно быть.
Макрос на автофильтр, Задать формирование выборки на новый лист
 
Как по мне, автофильтр долго работает. Если надо перенести данные, удовлетворяющие одному условию из листа на другой лист, мне кажется, проще использовать два равноразмерных массива один - источник данных, второй - отобранные данные, и затем второй массив вставить на чистый лист.

К примеру так:
Изменено: ASKer_mk - 12 Сен 2014 12:47:00
Страницы: 1 2 След.
Наверх