Я пытаюсь создать рабочий лист, который в конечном итоге будет использоваться для оптимизации маршрута с использованием исходного базового адреса и списка местоположений. В настоящее время у меня есть макрос, который использует API-интерфейс Google Maps, в котором будут указаны расстояния и продолжительность от исходного адреса до всех адресов в списке. Я пытаюсь найти самую короткую продолжительность, найденную с помощью API карт Google, и использовать связанный адрес в качестве нового источника, чтобы я мог снова сравнить расстояния и продолжительность. У меня есть настройка рабочего листа, так что адрес с самой короткой продолжительностью заменяет предыдущий адрес источника, но мне нужно иметь возможность копировать и вставлять каждый из новых адресов источника в свои собственные ячейки, чтобы по существу составить список порядка, в котором они используются.
По сути, считайте, что в ячейке G16 хранится первый исходный адрес, и после первого запуска макроса расстояния/длительности G16 обновится до любого адреса, который наименее удален от исходного адреса и станет новым исходным. Затем мне нужно скопировать этот исходный адрес в ячейку G18 и повторить макрос расстояния/длительности, при этом каждый последующий адрес из G16 копируется по 1 ячейке/строке за раз. т. е. 1-й адрес копируется в G18, 2-й — в G19, 3-й — в G20, пока не будут перечислены все адреса. Количество адресов также является переменным и меняется каждую неделю, поэтому диапазон не соответствует.
Пожалуйста, дайте мне знать, если это имеет какой-либо смысл, поскольку это довольно сложно объяснить. Спасибо!
У меня очень-очень ограниченный опыт работы с VBA, поэтому я попытался записать макрос для выполнения этой работы, но до сих пор мне удавалось просто копировать и вставлять значение, но я хочу, чтобы он перемещался/вставлялся на одну ячейку каждый раз, когда макрос использовал. Вот что у меня есть: Range("G16").Select Selection.Copy Range("G19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("G16").Select ActiveSheet.Paste Application.CutCopyMode = False Next End Sub
Range("G16").Copy Cells(Rows.count, "G").End(xlUp).Offset(1, 0)
скопирует G16 в следующую свободную ячейку ниже.
Это почти идеально! Спасибо чувак! Единственное, что ячейка G16, из которой я копирую, является формулой, и я пытаюсь скопировать/вставить только значение, которого достигает формула, возможно ли это?
Это должно работать:
Cells(Rows.count, "G").End(xlUp).Offset(1, 0).Value = Range("G16").Value
Что конкретно доставляет вам проблемы?