vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest środa, 15 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Rozbijanie danych z komórki ze wskazaniem komórek w których mają być rozbite dane


otwartyotwarty rozpoczął: elgutek postów: 7



napisał: elgutek
postów: 11


umieszczony:
22 sierpnia 2011
13:59

  
Przepraszam, że tak późno. Teraz działa.
Dziękuję za pomoc :)
Pozdrawiam
Elgutek
napisał: Trebor
postów: 1209


umieszczony:
21 lipca 2011
15:23

  
Nie zauważyłem, że forum obcina dwie spacje do jednej. Jak wchodzę w edycję mojego kodu to spacje są dwie, a na forum jedna.
Sprawdź poniższy kod (dopisz spację)
Sub rozbij()
Dim tekst As String, tablica, i As Long
'zakładam że dane znajdują się w pierwszej kolumnie od wiersza 1
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
tekst = Cells(i, 1)
'zamiana - na spacje
tekst = Replace(tekst, "-", " ")
'zamiana dwóch spacji na spację i - UWAGA - forum obcina dwie spacje do jednej
'po przekopiowaniu makra zmień w pierwszym cudzysłowie na dwie spacje
tekst = Replace(tekst, " ", " -")
'rozdzielenie ciągu
tablica = Split(tekst, " ")
tablica(0) = zamiana(tablica(0))
'zapisanie ciągów w arkuszu w tym samym wierszu i kolumnie 2
Cells(i, 2).Resize(1, UBound(tablica) + 1) = tablica
Next i
End Sub

Function zamiana(ByVal skrot As String) As String
Select Case UCase(skrot)
Case "LDR"
    zamiana = "lider"
Case "SR"
    zamiana = "syr"
Case Else
    zamiana = skrot
End Select

End Function

napisał: elgutek
postów: 11


umieszczony:
21 lipca 2011
08:43

  
W tym kodzie problem jest tylko z tym, że po rozbiciu każdej liczby wskazuje przy niej "-"
czyli np. zamiast "500" jest "-500 poza tym działa super.

Mam jeszcze pytanie czy możemy to odnieść do np. całej kolumny takich wyrażeń ( nie tylko do jednej komórki)
z automatu ??
I jeszcze sprawa z pełną nazwą. Czy istnieje kod który po rozpoznaniu skrótu mógłby we wskazanej komórce podać pełną jego nazwę np. kiedy z wyrażenia LDR-1200-300-800-250--701-0-570 otrzymamy "LDR" to za pomocą innego kodu i wskazaniu komórki z "LDR" we wskazanej przez nas komórce pojawi się pełna nazwa np. "lider" gdy skrót będzie "SR" pojawi się "syr" itp.
Z góry dziękuje za pomoc
Elgutek
napisał: Trebor
postów: 1209


umieszczony:
15 lipca 2011
19:30

  
Masz rację - nie rozumiem co chcesz przekazać. Np. zdanie:
To kwestia dotycząca minusa o którym wspomniałem wcześniej.
nic mi nie wyjaśnia.
Konkretnie, co działa źle w kodzie poza tym, że ogranicza się do jednej komórki?
napisał: elgutek
postów: 11


umieszczony:
15 lipca 2011
19:20

  
Niby coś w tym stylu tylko nie do końca zostałem zrozumiany.
Jeśli mamy wyrażenie

LDR-1200-300-800-250--701-0-570

to rozbijamy je na następujące wyrażenia
LDR
1200
300
800
250
-701
0
570
Oczywiście w komórkach kolejnych w jednym wierszu ( jak w kodzie ).
To kwestia dotycząca minusa o którym wspomniałem wcześniej.
Mam jeszcze pytanie czy możemy to odnieść do np. całej kolumny takich wyrażeń ( nie tylko do jednej komórki)
z automatu ??
I jeszcze sprawa z pełną nazwą. Czy istnieje kod który po rozpoznaniu skrótu mógłby we wskazanej komórce podać pełną jego nazwę np. kiedy z wyrażenia LDR-1200-300-800-250--701-0-570 otrzymamy "LDR" to za pomocą innego kodu i wskazaniu komórki z "LDR" we wskazanej przez nas komórce pojawi się pełna nazwa np. "lider" gdy skrót będzie "SR" pojawi się "syr" itp.
napisał: Trebor
postów: 1209


umieszczony:
15 lipca 2011
18:22

  
Nie wszystko jest dla mnie jasne. Wypróbuj poniższy kod:
Sub rozbij()
Dim tekst As String, kom As Range, tablica
'pobranie tekstu
tekst = Application.InputBox("Wskaż komórkę z danymi", Type:=2)
'wyjście jeśli tekst brak
If tekst = "" Then Exit Sub
'pobranie adresu komórki docelowej - zakładam, że w prawo bedziemy wstawiać fragmenty tekstu
Set kom = Application.InputBox("Wskaż komórkę docelową", Type:=8)
'wyjście jeśli brak
If kom Is Nothing Then Exit Sub
'zamiana - na spacje
tekst = Replace(tekst, "-", " ")
'zamiana dwóch spacji na spację i -
tekst = Replace(tekst, " ", " -")
'rozdzielenie ciągu
tablica = Split(tekst, " ")
'zapisanie ciągów w arkuszu
kom.Resize(1, UBound(tablica) + 1) = tablica
Set kom = Nothing
End Sub

napisał: elgutek
postów: 11


umieszczony:
15 lipca 2011
12:20

  
Witam !
W temacie pisania makr jestem nowicjuszem. Poszukuję makra które rozbijałoby dane zawarte w jednej komórce rozdzielone różnymi separatorami na kilka wskazanych komórek.
np.

LDR-1200-300-800-250--701-0-570 ( przy czym drugi znak"-" oznacza minus i powinien zostać przeniesiony do komórki z 701)

SR 100 300 (tutaj separatorem jest spacja)

Czy istnieje jakieś makro które po oznaczeniu ( np. LDR czy SR) wstawiałoby we wskazaną komórkę pełną nazwę wskazanego skrótu.

Bardzo proszę o pomoc
Pozdrawiam
Elgutek


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z