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

Страницы: 1 2 След.
Ошибка в формуле расчета между двумя координатами
 
Да, действетельно. Спасибо.
Школу слегка позабыл
Ошибка в формуле расчета между двумя координатами
 
Идею понял, только не понял зачем епсилон?
Если Ваша функция получит на входе 1.00000000000002 - то все равно будет ошибка. Так ведь?
Выкинул епсилон, и все работает
Код
Function MyAcos(ByVal arg As Double) As Double
  If arg > 1 Or arg < -1 Then
    MyAcos = 0
  Else
    MyAcos = Application.Acos(arg)
  End If
End Function

Спасибо за решение.
Изменено: Eger - 31.07.2018 14:58:55
Ошибка в формуле расчета между двумя координатами
 
А как откорректировать эту строку?
Код
r = Application.Acos(Sin(x1) * Sin(x2) + Cos(x1) * Cos(x2) * Cos(y1 - y2)) * 6371
В файле она закоментирована
Собственно весь код после нее возник из за того что эта строка не работает.
Изменено: Eger - 31.07.2018 13:54:46
Ошибка в формуле расчета между двумя координатами
 
Проверил на 2007 х32.
Возникает та же ошибка в том же месте но в других итерациях цикла с другими входящими значениями.
Ошибка возникает как в строке "Application.Acos(..." - Error 13 Type mismatch
так и в расписанном варианте на корне "Sqr(t1)..." - Runtime error 5: Invalid Procedure call or argument"

Кроме того заметил, что при работе в цикле ошибка вылетает стабильно
А при единичном прогоне проблемного участка кода с соответствующими параметрами - может глюкнуть, а может отработать нормально

Не смог прикрепить файл из за ограничения 100 кб (хотя не понимаю что в этом файле занимает так много места)
ссылка на файлообменник:
https://fex.net/589411477589
Ошибка в формуле расчета между двумя координатами
 
Разложил формулу по косточкам
И получилась какая то мистика...
Код
x1 = 50.190117 / 57.2957795130823 '0,875982793611179
x2 = 50.190117 / 57.2957795130823 '0,875982793611179
y1 = 27.053675 / 57.2957795130823 '0,472175703514477
y2 = 27.053675 / 57.2957795130823 '0,472175703514477
'r = Application.Acos(Sin(x1) * Sin(x2) + Cos(x1) * Cos(x2) * Cos(y1 - y2)) * 6371
s1 = Sin(x1) '0,768173099072915 Чудеса: При одинаковых входных разный результат
s2 = Sin(x2) '0,768173099072914 Чудеса: При одинаковых входных разный результат
c1 = Cos(x1) '0,640242211870409 Чудеса: При одинаковых входных разный результат
c2 = Cos(x2) '0,64024221187041 Чудеса: При одинаковых входных разный результат
c3 = Cos(y1 - y2) '1
a = (s1 * s2 + c1 * c2 * c3) '1
'aa = Atn(-a / Sqr(1 - a * a)) + 2 * Atn(1)
If a = 1 Then 'Еще один прикол: несмотря на то что a=1, then НЕ срабатывает. Обрабатывается Else...
aa = 0
Else
t1 = 1 - A * A '-4,44089209850063E-16 (1-1*1 тут получается не нулевое значение)
t2 = Sqr(t1) 'Получил Runtime error 5: Invalid Procedure call or argument
t3 = -A / t2
t4 = Atn(t3)
t5 = Atn(1)
t6 = 2 * t5
aa = t4 + t6
End If
r = -aa * 6371

Интересно, это глюки x64?
Если у кого то есть эта  версия, прогоните код пожалуйста.
Интересно докопать до истины.
Изменено: Евгений Яцишин - 29.07.2018 23:15:35
Ошибка в формуле расчета между двумя координатами
 
Есть формула расчета расстояния между двумя координатами
Код
x1 = 50.190117 / 57.2957795130823
x2 = 50.190117 / 57.2957795130823
y1 = 27.053675 / 57.2957795130823
y2 = 27.053675 / 57.2957795130823
r = Application.Acos(Sin(x1) * Sin(x2) + Cos(x1) * Cos(x2) * Cos(y1 - y2)) * 6371
Она работает в цикле с различными входными данными. Успешно обрабатывает 2500 итераций (в том числе около 50 при x1=x2 & y1=y2)
На приведенных значениях падает в ошибку: Error 13 Type mismatch

Что не так? и как победить?
(MS Excel 2019 x64)
Порядок нумерации страниц
 
Старницы на листе Excel нумерует по столбцам:
Код
1 3 5
2 4 6
А мне нужна нумерация страниц по строкам:
Код
1 2 3
4 5 6
Возможно ли это? Как?
Как подставить в Range() изменяемое значение?, Excel, VBA, Range, For
 
Спасибо.
Решено.
Как подставить в Range() изменяемое значение?, Excel, VBA, Range, For
 
Есть потребность данные таблицы выборочно разбрасывать в две другие таблицы на основании значения в столбце D каждой записи
Код
   For i = 3 To 79
      If Range("D" + i) = 1 Then ' Тут ошибка получается. Как правильно записать? - не знаю. 
          Range("a2").Select ' Обработчик 1
        Else
          Range("a3").Select ' Обработчик 2
      End If
    Next i
Циклический перебор ячеек
 
А как без "Select"?
Код создан на основе функции "записать макрос"
Циклический перебор ячеек
 
Спасибо
Циклический перебор ячеек
 
Задача: Скрыть строки, в которых значение ячейки в столбце M равняется нулю.
Написал код, но он НЕ работает.
Код
    For i = 7 To 1007
        If Cells(m, i).Value = 0 Then `<-- Error 1004
        Rows(i).Select
        Selection.EntireRow.Hidden = True
      End If
    Next i
Подскажите, что НЕ так?
Подозреваю, что Cells "не понимает" адрес столбца ячейки в виде буквы.

Как Заставить cells понимать буквы? Поскольку мной бутут использоваться столбцы далеко от начала таблицы, и высчитывать по алфавиту номер столбца - большая морока.

Спасибо.
Дата/время изменения ячейки
 
Как автоматически записать в комментарий к ячейке дату/время ее изменения при изменении ее значения?
Сортировка групп ячеек по первой ячейке в группе
 
Подскажите простой способ сортировки записей (групп ячеек) по первой ячейке в группе.

Сложность в том, что одна запись размещена в ТРЕХ СТРОКАХ
Необходимо отсортировать список по первой строке записи.
Сравнение происходит только по первой строке записи.
Перемещение применяется к записи целиком (три строки)
Еще после сортировки должны сохранится все связи с ячейками, которые на них ссылаются

Приложил упрощенный пример.
В примере необходимо отсортировать зеленый столбец А, чтоб
значения из красной области не перепуталось.
Т.е. в красной области значения должны остаться, а формулы могут поменяться.

Спасибо
Защита листа от повреждения пользователем
 
gling, спасибо.
Получается такой макрос нужно писать для каждого защищаемого диапазона?
В Вашем примере не охватывается строка "2" и столбец "B".
Код
           If Not Intersect(Target, Range("C3:C6")) Is Nothing Then
            ActiveSheet.Unprotect
            Range("D3:D6").FormulaR1C1 = "=RC[-2]*RC[-1]"
Это Ваша описка или осознанное действие (какой то хитрый нюанс, о котором я не знаю)?

Мотя, не применимо в бюджетных организациях, где бухгалтерами работают 50 летние "Марьи Ивановны"
Изменено: Евгений Яцишин - 08.01.2015 02:29:26
Защита листа от повреждения пользователем
 
Есть лист, в котором есть "защишенные" ячейки с формулами и  "НЕзащишенные" ячейки для ввода данных.
Лист защищен. Разрешено только "выделение незаблокированных ячеек".
Пользователь умудряется перетащить одну незащищенную ячейку на другую, в результате чего портятся формулы в защищенных ячейках, зависимых от перемещаемых. В результате имеем ошибку, которая не может быть устранена пользователем без снятия защиты.
Как решить данную проблему? т.е как защитить формулы в защищенных ячейках от изменения методом перетаскивания незащищенных ячеек?

Пример во вложении.

PS: Метод решения:
"Файл - Параметры - Дополнительно - Разрешить маркеры заполнения и перетаскивание ячеек"
НЕ подходит, так как действует не на лист или книгу, а на весь Excel, а у пользователей есть потребность использовать автозаполнение маркером в повседневной работе в других документах
Изменено: Евгений Яцишин - 08.01.2015 02:28:04
VBA выдает ошибку. (Excel 2003)
 
Спасибо всем.  
От каждого совета взял по кусочку и всё заработало так как нужно.  
Весь код вместился в 5 строк  
 
Private Sub CommandButton1_Click()  
   Sheets("1").[d4:iu4].Value = Sheets("12").[d32:iu32].Value
   For i = 1 To 12  
      Sheets(i).Range("D5:IU30").ClearContents  
   Next i  
   Sheets("1").Select  
End Sub  
 
Век живи - век учись...
VBA выдает ошибку. (Excel 2003)
 
Сама книга сразу не вставилась  
 
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
VBA выдает ошибку. (Excel 2003)
 
Ошибка 1004  
Метод Select из класса Range завершен неверно.  
 
Задача макроса: Скопировать итоги на конец 12 месяца и вставить "только значения" в начало первого месяца.  
После чего очистить обороты за во всех месяцах.  
 
Код:  
Private Sub CommandButton1_Click()  
   Range("D32:IU32").Select  
   Selection.Copy  
   Sheets("1").Select  
>>    Range("D4").Select ' Останавливается в этой строке.    
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  
   ...
Условное форматирование (Различить некорректный ввод числа)
 
Спасибо. Почти работает.  
 
Дополнил условия для того, чтоб пустые значения воспринимались как корректные  
 
=НЕ(ИЛИ(ЕЧИСЛО(D5);D5=""))
Условное форматирование (Различить некорректный ввод числа)
 
Как при помощи условного форматирования различить числовое значение, которое было введено некорректно?  
То есть нужно уже на стадии ввода отловить числовые значения, которые вызывают ошибки в математических формулах.  
Иными словами проконтролировать синтаксис при вводе    
 
Пример:  
Корректные значения:  
"12345,67"  
"-12345"  
"12,3%"  
Некорректные значения, которые подлежат выделению:  
"12345.67" - точка вместо запятой  
"1 234 567,89" - недопустимые символы (пробелы) в введенном значении  
"15 шт."  - недопустимые символы в введенном значении  
"орфываорыва" - не числовое значение
Сумма столбцов через один
 
Как посчитать сумму столбцов листа через один?  
 
В ячейке А4 есть формула, но она "некрасивая". Если столбцов много - то легко запутаться.  
Как можно сделать проще и читабельнее?  
 
Заранее Спасибо...
"Интеллектуальные" параметры страницы
 
Спасибо за код.  
 
Разбираю. Изучаю. Завтра буду внедрять...
"Интеллектуальные" параметры страницы
 
1 высота всех строк в области печати изначально одинакова, но подлежит незначительному изменению во имя выполнения задачи.  
 
2 убрать разрыв блока нужно только для печати.
"Интеллектуальные" параметры страницы
 
{quote}{login=KukLP}{date=29.12.2011 07:18}{thema=}{post}Бухгалтер тупой потому, что недостаточно хорошо знает Эксель.{/post}{/quote}  
 
Вам этого не понять.  
Бухгалтер тупая не потому что "не знает" а потому, что "не хочет знать".  
 
За два года я с трудом смог отучить бухгалтера специально вытирать формулы.  
Так как фразы "Я считаю на куркуляторе и знаю что это правильно, а из за твоих формул будет куча ошибок" или "Я всегда делала без формул и было правильно, так что не надо мне твоих формул..." оспариванию не подлежат.  
 
Мне бы плевать на то как она мучается, но проблема в том, что ежемесячно за 2-3 дня до зарплаты поднимается крик "зарплата горит". Начальство под угрозой лишения премии загоняет меня на зарплату, где мне ежемесячно приходи, после зарплаты, еще и выслушивать что я "снова внес в ведомость кучу всего непонятного (формулы)".  
И всё это при том, что я и близко не бухгалтер...  
 
Сейчас бухгалтер в отпуске, (т.е. не мешает) и я хочу сделать зарплатную ведомость так, что все будет работать максимально просто и четко без лишнего вмешательства "тупого бухгалтера".  
После чего защитить книгу и поставить бухгалтера перед фактом, что обратного пути НЕТ!.  
 
Это если кратко... Но Вам этого не понять...  
 
Но всё это ОфТоп и моя головная боль.  
Давайте вернемся к вопросу, который описан в первом посту.  
Кто-то может помочь?
"Интеллектуальные" параметры страницы
 
{quote}{login=}{date=29.12.2011 06:56}{thema=}{post}можно так{/post}{/quote}  
Так нельзя.  
Так как в данном случае была РУЧНАЯ попытка подгонки размеров.  
(при этом одна из записей так и осталась разорванной...)  
 
В ручную я и сам могу (но не хочу)  
 
Я же спрашивал как "автоматизировать" данный процесс? т.е. выполнить его без вмешательства тупого бухгалтера.
"Интеллектуальные" параметры страницы
 
Имеется таблица следующей структуры:  
Одна запись состоит из трех строчек. Между записями одна пустая строка. (итого - четыре)  
 
Таблица формируется динамически. Каждый раз число столбцов, ширина столбцов разная.  
 
Масштаб таблицы подгоняется так, чтоб при максимально крупном масштабе на лист помещались все поля.  
 
Таблица подлежит дальнейшей печати.  
 
Проблема: при изменении масштаба для печати меняется число строк, которые помещаются на один печатный лист. т.е. происходит разрыв записи на разные страницы.  
 
В примере на Лист1 показано как должно быть и на Лист2 - как НЕ должно быть.  
 
Как автоматизировать процесс "подгонки" данных для печати, чтоб при максимально крупном масштабе записи не разрывались?  
 
Допускаю незначительное изменение полей, допускаю изменение высоты строки между записями, допускаю VBA.  
Но как это реализовать на практике - не знаю :( ...
Сведение списков
 
Код смотрел но многое не понял.  
Чтоб основательно вникнуть - нужно ближе познакомится с ВБА.  
 
Сравнение идет по 2 полям:  
ФИО и ИИН (налоговый код)  
Только ФИО нельзя, так как штат большой, повторов много.  
Только ИИН нельзя, так как после принятия на работу людей их ИИН "доходит" до бухгалтерии через 1-2 месяца. Т.Е. в ведомостях постоянно болтаются 10-20 чел без ИИН, и их тоже необходимо как то обрабатывать.  
Выгрузка тоже идет по 2 полям - по каждому человеку - две суммы.  
 
Приложенный в первом посте пример - упрощен.
Сведение списков
 
Спасибо за готовое решение. Буду разбираться с макросом...  
 
Много нового незнакомого в синтаксисе :)  
(последний раз программировал на Васике лет 10 назад в школе)  
 
Если я правильно понял, то логика такова:  
1. Сортировка списка по неуникальным  
2. Проход по списку с проверкой соседних на одинаковость  
2.1. В случае одинаковости - к первому приплюсовать второй; второй грохнуть  
3. Если в шаге 2 одинаковые обнаружены - повторить шаг 2  
 
Я никак пока не ошибся?  
Или есть более оптимальное решение?  
 
И сколько приблизительно времени будет работать макрос при сравнении списка 1500 записей и сплюсовывании суммы по двум полям на среднестатистическом Селероне 1,7 в Excel 2003?
Сведение списков
 
Исходные данные:  
Имеются 3 списка, взятых из зарплатных ведомостей за три разных месяца.  
Каждый список содержит Фамилию и Размер зарплаты человека за данный месяц.  
Необходимо:  
Создать один список, содержащий Размер зарплаты человека за квартал (сумма 3 месяцев).  
 
Сложности:  
В связи с текучкой кадров и большего размера штата каждый месяц списки разные.  
Кто-то приходит, кто то уходит.  
Так же может быть разным количество людей в списках за разные месяцы.  
Так что тупо отсортировать и сложить не получится.  
В ручную сводить списки - работа на несколько часов... т.е. не подходит.  
 
Подскажите:  
Каким способом лучше всего реализовать данную фичу?  
Можно ли обойтись без VBA?  
Если не обойтись - то какой должен быть алгоритм сведения списков, чтоб получилось не сложно и оптимально?  
(с алгоритмом подробнее, пожалуйста)  
 
Приоритеты:  
1. Правильность работы  
2. Устойчивость технологии от тупых криворуких бухгалтеров.  
 
Дополнительно:  
MS Excel 2003 RUS SP3  
Заранье СПАСИБО
Страницы: 1 2 След.
Наверх