VBA - wyszukiwanie wartości w arkuszach

0

Witam. Mam zadanie do wykonania w VBA excel i muszę stworzyć kilka wierszy tekstu które wyszukają kolumna po kolumie w losowo rozrzuconych liczbach w zakresie komórek od A1 do Z100 liczby i otrzymać zbiór tych liczb. Siedze nad tym już dobry kawałek czasu i po prostu chciałbym żeby ktoś mnie naprowadził na metode w jaki sposób to zrobić. Chciałbym podkreślić, że jestem totalnym żółtodziobem. Proszę o pomoc!

Z góry dziękuję!

1
Sub separated_values()
    Dim value_x
    value_x = Application.Range("A1:J10")

    Dim a As Variant
    Dim string1 As String
    string1 = ""

    For Each a In value_x
        If Not IsEmpty(a) Then

            string1 = string1 & "," & a

        End If
    Next
    string1 = Replace(string1, ",", "", 1, 1)
    Application.Range("J11").Value = string1
    
End Sub

Rezultat możesz mieć wstawiony w miejsce, gdzie wskażesz, czyli zaznaczysz komórkę, dzięki oto temu kodowi (zamień przedostatnią linię na tę):

Application.Selection.Value = string1
0

Dziekuje slicznie! Zaraz zobacze jak sie sprawuje kodzik :) masz moze jeszcze pomysl jak powstaly zbior podzielic na podzbiory trójelementowe?

0
Podlasiak19 napisał(a):

Dziekuje slicznie! Zaraz zobacze jak sie sprawuje kodzik :) masz moze jeszcze pomysl jak powstaly zbior podzielic na podzbiory trójelementowe?
Chodzi mi głównie czy powstały string jestem w stanie podzielić żeby dla podanych komórek przypisać kolejne 3 z tego stringa?

1
Sub separated_values2()

    Dim value_x As Variant, n As Integer, xm As String, nnn As Integer, a As Variant
    
    value_x = Application.Range("A230:F233")
    n = 0
    xm = ""
    nnn = 0

    For Each a In value_x
        If Not IsEmpty(a) Then
  
            If (nnn = 3) Then
                n = n + 1
                Application.Cells(ActiveCell.Row + n, ActiveCell.Column) = xm
                nnn = 0
                xm = ""
            End If
            
            nnn = nnn + 1
            
            If xm = "" Then
                xm = a
            Else
                xm = xm & "," & a
            End If
              
        End If
    Next
 
    Application.Cells(ActiveCell.Row + n + 1, ActiveCell.Column) = xm
 
 
End Sub

"Features" sam zaimplementuj.

0

Dziękuję jeszcze raz za pomoc. Jedynie mam jeszcze pytanie co do tego kodu by go zrozumieć i się nauczyć a mianowicie - jak możemy tutaj zdefiniować czym jest w zasadzie oznaczone tutaj nnn?

1

Przedostatnią linię można by wrzucić w pętlę z warunkiem "Jeśli nastąpi ostatnia iteracja, to wrzuć pozostałość do odpowiedniej komórki w Excel'u.".

Co do pytania; jeśli zmienna nnn osiągnęła wartość 3, to wrzuć wszystko, co do tej pory uzbierała zmienna xm do arkusza w Excel'u oraz wyczyść tę zmienną (zrób ją pustą ("")) i tak w kółko, aż wartości, które miały być odnalezione zostały odnalezione poprzez nadany wcześniej zakres, tutaj "A230:F233". Reasumując, zmienna ta określa ilość wartości wrzuconych do pojedynczej komórki. Jeśli byłby taki warunek: (nnn = 5), to wtedy do komórki trafiłoby pięć (5) wartości po przecinku, bo tak jest w kodzie.

0

Super! Dziękuje ślicznie za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1