Страницы: 1
RSS
VBA-разница чисел (расстояния между точками)
 
Всем привет,  
Имеется задача след. характера:  
Имеется таблица с данными, в первом столбце значения прямой линии (концов линий), во втором значения точек на этой линии.  
Необходимо вычислить расстояние между точками, так же расстояние между первой точки и началом линии (0), и расстояние между последней точки и концом линии. Необходимо создать массив со значениями расстояний.  
Думаю просмотрев пример будет более понятно.  
 
Так же что-то пытался сам сделать, но не выходит, мой код (так же есть в примере):  
 
Sub test_L()  
Dim a(), i&, ii&, L_max#  
a = Worksheets("Sheet1").Range("c5:d30").Value  
L_max = Application.Max(a)  
For i = 1 To UBound(a, 2)  
ReDim L#(1 To UBound(a, 2))  
L(i) = a(i + 1, 2) - a(i, 2)  
 
Next  
End Sub  
   
Спасибо
 
Пример
 
Есть идеи?  
Может задача не ясно? Объясню если что-то не понятно  
Спасибо
 
Вообще ничего непонятно... Диапазоны (С и D) не совпадают... G:I - откуда всё это?
 
>>Вообще ничего непонятно... Диапазоны (С и D) не совпадают... G:I - откуда всё это?  
Не отрицаю, как говорится, лучше 1 раз увидеть, чем 100 раз услышать.  
Поэтому, прошу посмотреть PDF файл во вложение.  
Отразил схематически суть проблемы.  
Более понятно ?  
 
Спасибо
 
PDF нельзя вложить оказывается =)  
Прошу пройти по ссылке ниже:  
https://dl.dropbox.com/u/13038878/Planetaexcel-question.pdf
 
{quote}{login=metrox}{date=14.12.2012 01:58}{thema=}{post}PDF нельзя вложить оказывается =){/post}{/quote}Можно. В архиве, и если архив при этом меньше 100 кБ
 
Есть идеи? Прошу помощи ... Неужели не ясна моя задача до сих пор?
 
Попросил помощи на стороннем форуме:  
http://www.excel-vba.ru/forum/index.php?topic=1757.new#new
 
Вот мне лично Ваша задача действительно непонятна - она или очень проста, или очень сложна. Какой массив Вы хотите получить (в ячейках, в ВБА) и что с ним нужно дальше делать?
 
Все очень просто, но у меня нет, по видимому, дара красноречия и способности объяснить простые вещи простым языком. Пользователи данного форума, простите меня :))))  
По сути:  
В жизни это конечно же не просто линии. Делаю расчет балки(инженер), в общих чертах.Мы имеем балку, которая может быть разного сечения (в примере это 3 отрезка прямых).Балка имеет опоры в разных местах (на схеме это прямоугольники). Таким образом наша балка (которая состоит из 3ех частей) разделена на разные отрезки. Необходимо получить расстояния этих отрезков.  
В 1 столбике мы имеем данные для балки (length) - координаты конечных точек.  
Во 2 столбике мы имеем данные опор. В таблице RESULT показал пример.  
В VBA мне необходимо получить расстояния каждого отрезка, с каждым отрезком будет происходить расчет (т.е. цикл).  
В примере что-то начал делать, но не знаю знаю как правильно программно сделать цикл, чтобы мы брали 1 отрезок, производился расчет, потом след. и т.д.  
В данном примере, думаю будет достаточно вывести результат на лист построчно для каждого отрезка:  
L1=1  
L2=1  
L3=2  
L4=3  
L5=2  
L6=3
 
А макрос обязательно? может формулы?  
в файле решение и формулами, и макросом
 
Считаем расстояния между точками. Циклом.  
Всем идущим следом, pdf  внутри файла.
 
Доброе утро Михаил С., к61. Спасибо за помощь.  
У обоих то что надо, но решение Михаил С. больше подходит для моей задачи.  
Михаил С.,  
Надо на VBA =(  
Прошу посмотреть пример. Можно ли исключить 0, если последняя опора у нас на конце балки.  
Как в примере, длина балки 10м. Опора на 0м и 10м. То расстояние между опорами так же 10м, и 10-10=0 - исключаем.
 
{quote}{login=metrox}{date=15.12.2012 11:12}{thema=}{post}Прошу посмотреть пример. Можно ли исключить 0, если последняя опора у нас на конце балки.  
Как в примере, длина балки 10м. Опора на 0м и 10м. То расстояние между опорами так же 10м, и 10-10=0 - исключаем.{/post}{/quote}Так что должно получиться в примере, 0 и 10, или только 10? ведь там обе опоры на концах балки...
 
Вы правы, в результате должно быть только 10.
 
Есть идеи?
 
примерно так
 
Михаил С., спасибо.  
Можно вопрос, а почему первое число (MiArr(1, 1)) в массиве результатов пустое? Это можно обойти?
 
Не надо исправлять, все хорошо ...  
Спасибо
Страницы: 1
Читают тему
Наверх