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

Страницы: 1
Добавление новых строк из файла в книгу
 
эээм на двух машинах - не сработало. "Сбой инициализации источника данных"
Добавление новых строк из файла в книгу
 
Подскажите пожалуйста есть ли какой-то скрипт который бы проверял входящий файл с файлом для сравнения и если в входящем файле обнаруживались строки которых нет в другом - добавлял их в файл для сравнения?

Тоесть скрипт добавлял только новые строки в конец уже имеющихся данных
Приналежность GPS координаты заданому полигону
 
Максим Зеленский,Та нет, ваш код даже удобнее, т.к. можно не бояться какой-то точки в 10000чной строке, но он не давал результата. При x,y=15,27 (как вверху на скрине) формула выдавала что точка вне диапазона т.е. ЛОЖЬ, хотя по "Где точка?" пишет что внутри.
Изменено: KKS - 11.09.2014 17:01:22
Приналежность GPS координаты заданому полигону
 
Максим Зеленский, спасибо. Заработало. Только вот в некоторых моментах работало не верно




но вставил тот кусок который сам определяет конец диапазона от B3 и все получилось, точки считаются точно так как по клику кнопки.
Код
Const k2 = 2 / 3
 
Function dot_match(ByVal x0 As Double, ByVal y0 As Double) As Boolean
   Dim r As Integer
   Dim КоличествоПересечений As Byte
    
   r = 3
   Do
      If Cells(r + 1, 2) = "" Then Exit Do
      If Пересекает(Cells(r, 2), Cells(r, 3), _
                       Cells(r + 1, 2), Cells(r + 1, 3), x0, y0) Then
         КоличествоПересечений = КоличествоПересечений + 1
      End If
      r = r + 1
   Loop
   If КоличествоПересечений Mod 2 = 0 Then
      dot_match = False
   Else
      dot_match = True
   End If
End Function
 
Private Function Пересекает(x1 As Double, y1 As Double, _
                    x2 As Double, y2 As Double, x0 As Double, y0 As Double) As Boolean
   Dim x_min As Double, x_max As Double
   Dim k1 As Double, b1 As Double, b2 As Double, x_ As Double
    
   Пересекает = False
    
   If x1 = x2 Then x2 = x1 + 0.001 'для вертикальных отрезков!
    
   If x1 > x2 Then
      x_max = x1
      x_min = x2
   Else
      x_max = x2
      x_min = x1
   End If
    
   k1 = (y2 - y1) / (x2 - x1)
   b1 = y1 - k1 * x1
    
   b2 = y0 - k2 * x0
    
   x_ = -(b2 - b1) / (k2 - k1)
    
   If (x_ > x_min And x_ <= x_max) And (x_ > x0) Then Пересекает = True 'And (x_ > x0) при k=1
End Function
 

Только с вериткальными линиями и в оригинальном файле проблема, но на результат это не сильно повлияет. :)
Приналежность GPS координаты заданому полигону
 
Не смотря на классику, готового решения не нашел...
Есть вариант не основаный на формуле, как его "обформулить", увы не знаю :(
Приналежность GPS координаты заданому полигону
 
Здравствуйте, подскажите как в Excel можно узнать входит ли координата в начерченый полигон или нет. Полигон сам по себе очень сложній и кроме как координатами верши никак не задан.
Самих GPS точек очень много, и обрабатывались они в Excel потому думал и довести до ума в Excel. Но если есть какая-то сторонняя софтина позволяющая решить задачу на 10000+ точек - сойдет и она.

Вот визуализация тестового полигона с тремя точками


и прикрепляю файл с координатами полигона и самих точек.
Нужно что бы в итоге №32 и №33 определило как точки входящие в полигон
Попадает ли число в диапазон, и если да в какой?
 
Спасибо, разобрался, не думал что массив может состоять из одной формулы, но смысл была массива внутри ячейки. Все заработало!  
Формула vikttur - работает :)
Попадает ли число в диапазон, и если да в какой?
 
Так если формула массива то везде ж пропишется {=ИНДЕКС($C$4:$C$11;МАКС(ЕСЛИ((G4>=$A$4:$A$11)*(G4<=$B$4:$B$11);СТРОКА($4:$11)-3)))} и будет сравнение по 1му значению G4, хотя должно было размножится 4..11
Попадает ли число в диапазон, и если да в какой?
 
Увы, не работают формулы когда список не отсортирован.  
=ИНДЕКС($C$4:$C$11;МАКС(ЕСЛИ((G4>=$A$4:$A$11)*(G4<=$B$4:$B$11);СТРОКА($4:$11)-3))) работает как копирование построчно с массива, тоесть не ищет значение в границах, а просто копирует значение. Получается - 36 Сидоров. когда диапазон 26-53 принадлежит Иваненко.  
 
=ИНДЕКС($C$4:$C$11;МАКС((G4>=$A$4:$A$11)*(G4<=$B$4:$B$11)*СТРОКА($A$4:$A$11)-3))  
Не работает, работает только для первого вхождения и то когда список отсортирован.  
 
=ВПР(МИН(ЕСЛИ(((G9<$B$4:$B$11)*(G9<$B$4:$B$11)>0);$B$4:$B$11));$B$4:$C$11;2;0)  
неккоректно работает :(  
 
Получился результат только с VBA, но я так понял что скрипт работает только по вводу, если применить уже к введенным данным - работать не будет.  
 
А цикл формулами в Excel не организовать? что бы одна ячейка проверяла все диапазоны в массиве
Попадает ли число в диапазон, и если да в какой?
 
увы, данные забираются с внешнего файла, который редактировать нельзя.
Попадает ли число в диапазон, и если да в какой?
 
Столкнулся с задачей, есть очень много массивов с началом и концом... например 1-5 и нужно узнать принадлежит ли число в ячейке указанным массивам. Если да то вытягивать Фамилию из ячейки рядом.  
 
Пример прикрепляю. Помогите как можно решить проблему стандартными средствами Excel2003, а если нет - то как через VBA.  
 
В рабочей задаче количество массивов около 3000, и количество значений около 1000. Для единичного значения делал проверку через если, если вписывается то истина, если нет то ложь и так находился верный диапазон и фамилия... но если прописывать таким же образом под существующую задачу то нужно 3 000 000 ячеек-проверок %)
Точное время просчета листа.
 
Получалось, получалось, и перестало получатся :(  
Сначала выводилось 0,015625 потом 0... и только один раз я увидел примерно похожее на правду, 8,2сек.  
Может нужно выделять лист или что-то еще делать? Я же просто запускал Макрос и каждый раз видел то ли 0,015625 то ли 0.  
 
Хотел прислать пример, но он в запакованном виде 2,65МБ, а в запакованном 465КБ, что по правилам форума не проходит.
Точное время просчета листа.
 
слэн, спасибо!  
Sheets(n), где n-порядковый номер вычисляемого листа?  
А для книги в целом будет Book(1)?
Точное время просчета листа.
 
Здравствуйте, столкнулся с проблемой оптимизации формул на листе, у меня очень часто используется функция ВПР2, с вашего сайта. Очень полезная функция, но и очень требовательная. При 1 столбце на 5000 строк время подсчета не сильно большая и не очень бросается в глаза. Но при 150 столбцах по 5000 строк  - время просчета всех значений намного увеличивается, я стал дописывать в начало строки формулы проверку значений, стоит ли задействовать функцию ВПР2 или нет.    
Но для более продвинутой оптимизации хотелось бы иметь точное время просчета формул на листе. Что бы увидеть, ага до оптимизации считали за 35000ms, а после за 18546ms.  
Есть ли такой параметр в Excel2003?    
 
Спасибо.
Страницы: 1
Наверх