Wpis z mikrobloga

Pisze kod w #vba w którym pobieram dane z wybranego arkusza, wstawiam do arraya i potem po przekształceniach wstawiam ten array do nowego arkusza. Jedna z moich kolumn zawiera wartości takie jak "1/2015”, "10/2020" czy "30/2010" i nieważne co zrobię, w nowym arkuszu zamienia się to na daty (te 30/2010 się nie zmieniają, bo nie ma 30 miesięcy w roku).
Jak mogę przekonwertować te dane na stringa żeby to gówno się nie zmieniało?
#excel #programowanie
  • 16
@kaosha: obie zawierające ten sam tekst tylko w jednej jest apostrof? Nie sądzę. Chyba, że coś się mocno pozmieniało w najnowszych wersjach Excela. Apostrof nie jest przechowywany jako część wartości komórki, tylko ustawia odpowiedni znacznik.
Jak mogę przekonwertować te dane na stringa żeby to gówno się nie zmieniało?


@brak_nicku: w samej tablicy nie ma sensu/potrzeby niczego konwertować na string, bo to już jest string, cała magia dzieje się w momencie zapisu tablicy do zakresu. Żeby podpowiedzieć najlepsze rozwiązanie, to potrzebne są jeszcze co najmniej 2 informacje:
- co prócz tych tekstów zawiera tablica? W szczególności, czy są tam formuły?
- w jaki sposób zapisujesz zawartość tablicy
@brak_nicku dane pobieram do kilku zmiennych w stylu
Dim Dane1, Dane2
Dane1 = arkusz.range("A1:C" & lastRow).Value
Dane2 =arkusz.range("F1:F" & lastRow).Value

Tablica zawiera liczby, trochę tekstów "słownych" typu "Kazimierz" i daty. Następnie z Następnie w pętli dodaję te elementy do arraya
For i = 1 to Ubound(Dane1)
Arr(i, 1) = Dane1(i, 1)
Arr(i, 2) = Dane1(i, 2)
Arr(i, 3) = Dane2(i, 1)


I na końcu wrzucam całego arraya do arkusza
WB.sheets(1).range(A1).(blabla).value = Arr
@kaosha
@brak_nicku
Ostatecznie zadziałało nadanie przed włożeniem danych formatu kolumny tj.

WB.sheets(1).columns("D").NumberFormat= "@"
WB.sheets(1).range(A1).(blabla).value = Arr

Wtedy w kolumnie D pozostaną same stringi i jest to lepsze od używania range.text (które u mnie nie działało) bo .text zaczytuje to co w danej chwili Excel przedstawia (więc gdyby tekst był za długi i powstały ####, to by je wprowadził)