VBA - wyszukiwanie wartości w arkuszach

Odpowiedz Nowy wątek
2018-11-27 23:55
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ę!

Pozostało 580 znaków

2018-11-28 01:41
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
edytowany 3x, ostatnio: Neutral, 2018-11-28 13:10
Excel.WorksheetFunction.TextJoin(",",True,range("a1:j10")) :) - Marcin.Miga 2018-11-28 08:55

Pozostało 580 znaków

2018-11-28 13:33
Podlasiak19
0

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

Pozostało 580 znaków

2018-11-28 14:01
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?

Pozostało 580 znaków

2018-11-28 21:13
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.

Pozostało 580 znaków

2018-11-29 01:59
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?

Pozostało 580 znaków

2018-11-29 15:07
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.

edytowany 1x, ostatnio: Neutral, 2018-11-29 15:08

Pozostało 580 znaków

2018-11-29 23:35
0

Super! Dziękuje ślicznie za pomoc!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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