#excel #vba #loops
#excel #vba #циклы
Вопрос:
У меня следующая проблема, которую я не могу решить.
У меня есть следующий список данных:
Row Value
DK12_DK13 2
DK12 4
DK15 3
DK11 3
DK13 5
Что я хочу, чтобы моя функция выполняла цикл по столбцу rows, чтобы выбрать первые 4 (и последние 4) символа и сохранить их в строке. Затем я хочу сохранить значение столбца b (значения), которое соответствует 4 первым символам в новой строке.
Чтобы уточнить, первой строкой будет DK12, я бы затем использовал эту строку для поиска 4 символов DK12 в столбце A, который имеет значение 4, а затем сохранил значение 4 в другой строке. Я предполагаю, что это потребует от меня наличия цикла внутри цикла. Прямо сейчас у меня есть следующий код, но я как бы застрял здесь, когда я хочу перебрать данные, которые я сохранил в строках из первого цикла. Надеюсь, мое объяснение имеет смысл:
Sub Test()
Dim I As Integer
Dim L_text As String
Dim R_text As String
Dim Full_text As String
Dim L_Value As String
For I = 5 To 9
L_text = Left(Range("A" amp; I), 4)
R_text = Right(Range("A" amp; I), 4)
If Len(Range("A" amp; I)) = 9 Then
L_text = Left(Range("A" amp; I), 4)
R_text = Right(Range("A" amp; I), 4)
Full_text = Left(Range("A" amp; I), 9)
End If
Next I
End Sub
Комментарии:
1. Какова цель этого? Не могли бы вы просто сослаться на таблицу рабочего листа, где хранятся данные? Почему бы не сохранить поиск и значение в массиве вместо использования строк? Здесь так много всего, что не имеет смысла.
2.
VLOOKUP
(который можно использовать из VBA) — это естественный способ извлечения значений в электронной таблице, которые соответствуют ключам в соседнем столбце. В качестве альтернативы, если данные достаточно велики, было бы выгодно загрузить их в словарь. На самом деле непонятно, что вы пытаетесь сделать. Столбец A содержит два типа строк, некоторые из которых содержат 4 символа, а некоторые — 9, и вы используете строки, извлеченные из 9 символьных строк, в качестве ключей (которые являются 4-символьными строками)? Кажется странным, но если да, то что вы планируете делать с полученными значениями? Пожалуйста, уточните.3. Привет, то, что я пытаюсь сделать, это создать функцию, которая добавит все значения на основе строки из 9 символов. Так что это будет DK12_DK13 DK12 DK13, а затем будут удалены строки из 4 символов. Но из чистого любопытства, возможно ли расширить мою функцию дополнительным циклом?