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

  tytuł wątku:
Wątki dyskusji

Makro do wycinania tekstu z komórki


otwartyotwarty rozpoczął: agent_0700 postów: 6



napisał: Trebor
postów: 1209


umieszczony:
22 grudnia 2009
16:04

  
Cytat:
No właśnie problem w tym, że ciąg nie jest regularnej długości więc pomysł Trebora odpada
Twój sposób z wykorzystaniem narzędzia "tekst jako kolumny" działa podobnie do funkcji split. Sądzę, że nawet nie spróbowałeś jak działa makro które zamieściłem.
napisał: agent_0700
postów: 2


umieszczony:
22 grudnia 2009
10:11

  
No właśnie problem w tym, że ciąg nie jest regularnej długości więc pomysł Trebora odpada. Udało mi się jednak znaleźć inne, prostsze rozwiązanie - excel ma opcję Dane->tekst do kolumn, którą nagrałem na makro, co całkowicie załatwia mi problem podziału i wyszukiwania tekstu bo po prostu po zastosowaniu tej funkcji kopiuję po kolei zawartość odpowiednich kolumn.

Jednakże dziękuję za zainteresowanie i pomoc!
napisał: Trebor
postów: 1209


umieszczony:
21 grudnia 2009
18:24

edytowany:
21 grudnia 2009
18:25

  
Moja propozycja opiera się na założeniu, że podany ciąg jest na tyle regularny, że status po rozłożeniu ciągu do tablicy za pomocą funkcji split będzie zawsze w tej samej kolumnie.
Sub Macro1()
Dim a As Long, i As Long, dane
'sprawdzanie ile jest zapelnionych wierszy w arkuszu
a = Cells.Find(What:="*", After:=Cells(1, 1), _
               SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 'ostatni wiersz
For i = 1 To a
dane = Split(Cells(i, 1), ",")
'makro wypisujace numer bledu
Cells(i, "AJ") = dane(0)
'Makro wypisujace status
Cells(i, "AK") = dane(19)
Next i

End Sub


Hej
napisał: pawellaki
postów: 5


umieszczony:
21 grudnia 2009
17:53

  
Możesz wykorzystać funkcje instr(tekst,szukanytekst).Zwraca pozycje znalezionego tekstu. Jak nie znajdzie zwraca 0.
I póżniej wykorzystać mid(tekst,początek[,dlugosc]) ktora wyciąga tekst od podanej pozycji
napisał: pawellaki
postów: 5


umieszczony:
21 grudnia 2009
17:49

  
Możesz wykorzystać funkcje instr(tekst,szukanytekst).Zwraca pozycje znalezionego tekstu. Jak nie znajdzie zwraca 0.
I póżniej wykorzystać mid(tekst,początek[,dlugosc]) ktora wyciąga tekst od podanej pozycji
napisał: agent_0700
postów: 2


umieszczony:
21 grudnia 2009
11:21

edytowany:
21 grudnia 2009
11:29

  
Mam następujący problem do rozwiązania: w komórkach od A1 do A300 mam pewne zimp[ortowane dane, które są wpisywane do jednej komórki. Oto przykładowa zawartość komórki:
Cytat:
0001857,TP OldHR Portal,TP Pawel Bolcyn,,normalny,średni,nie próbowano,,brak,TST,2009-12-17,żaden,,,,publiczny,2009-12-17,"ESS - Testy - Kontrola zatrudnienia, scen. ESS_Infotyp_01",nowy,otwarty,,0000000,

Potrzebuję makra, które w jednej kolumnie umieszczałoby numer błędu skrócony do czterech cyfr (czyli w tym przypadku 1857) oraz status rozwiązania czyli w tym przypadku "nowy". Problem mam właśie z tą drugą częścią, bo długość ciągu w komórce jest różna a statusów może być kilka. Funkcja FIND zwraca poprawne wartości, ale pod warunkiem, ze one tam istnieją. Jeśli np chcę wyszukać w tej komórce wyrażenia "poprawiony", dostaję błąd "#VALUE!" co w VBA ma oznaczenie Error 2015. Dlatego stworzyłem następującego potworka - w jednej kolumnie skrypt wyszukuje wyrażenia "nowy" w innej "poprawiony" a w kolejnej "przypisany". Wszystko byłoby fajnie, tylko nie wiem jak te kolumny ze sobą połączyć tzn zrobić taką "wypadkową" tych trzech kolumn, w której znajdowałyby się wszystkie poprawne wartości. Próbowałem kopiować zawartość komórek do innej kolumny ze zwykłą instrukcją warunkową
Cytat:
IF activecell.value="nowy" THEN

Ale zawartość komórki to formuła, więc ten sposób się nie sprawdził.

Podsumowując - albo potrzebuję instrukcji, która wyszuka mi wynik formuły i na tej podstawie będę mógł je skopiować do innej kolumny, instrukcji warunkowej do sprawdzania czy komórka nie zawiera błędu (wtedy by był warunek, że jeśli komórka nie zawiera błędu, to niech skrypt skopiuje zawartość) lub zupełnie innego mechanizmu wyszukiwania słowa kluczowego. Poniżej zamieszczam mój aktualny kod:

Sub Macro1()
Dim a, i As Integer
Dim kom As Range
a = 1
Range("A1").Select
'sprawdzanie ile jest zapelnionych wierszy w arkuszu
Do Until Range("A1").Offset(a - 1, 0).Value = ""
Range("A1").Offset(a, 0).Select
    a = a + 1
Loop
ActiveCell.Select
Set kom = ActiveCell.Offset(-1, 35)
'makro wypisujace numer bledu
    Range("AJ2").Select
    ActiveCell.Value = "=RIGHT(LEFT(A2,7),4)"
    Selection.AutoFill Destination:=Range("AJ2", kom), Type:=xlFillDefault
'Makro wypisujace status
Set kom = kom.Offset(0, 1)
Range("AK2").Select
ActiveCell.Formula = "=IF(FIND(""poprawiony"",A2),""poprawiony"",""brak"")"
Selection.AutoFill Destination:=Range("AK2", kom), Type:=xlFillDefault
Range("AL2").Select
Set kom = kom.Offset(0, 1)
ActiveCell.Formula = "=IF(FIND(""nowy"",A2),""nowy"",""brak"")"
Selection.AutoFill Destination:=Range("AL2", kom), Type:=xlFillDefault

Range("AM2").Select
Set kom = kom.Offset(0, 1)
ActiveCell.Formula = "=IF(FIND(""przypisany"",A2),""przypisany"",""brak"")"
Selection.AutoFill Destination:=Range("AM2", kom), Type:=xlFillDefault


End Sub



Z góry dziękuję i przepraszam za prawdopodobnie zawiłe tłumaczenie


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z