цикл внутри цикла vba

#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 символов. Но из чистого любопытства, возможно ли расширить мою функцию дополнительным циклом?