Funkcja Split().
Regularna tabela, nie trzeba 'Split', tylko mało matematyki [syntax=vb]For i = 0 To 10 r = Val(komorka) - 1 Workbooks(plik1).Worksheets(arku2).Range... & 7 + 3 * i).Resize(1, 26).Copy Workbooks("PE caly.xlsm").Worksheets("rozliczenie").Ra... & 7 + r + i * 37).PasteSpecial Paste:=xlPasteValues Next i [/syntax]
jakoś samemu mi nie idzie Nie idzie, bo co innego piszesz w #1, a co innego w #4. [syntax=vbscript]Sub Guzik() Range("A2:A4") = Split([A1], " ")(1) End Sub [/syntax]
Ciekawy pomysł :) Realizacja nie będzie raczej łatwa. Nie będę zanudzać formularzami użytkownika, więc od razu zapytam: A co z tymi nazwiskami po uzupełnieniu tabelki? Może skupić się na miejscu docelowym (InputBox, Split)?
Ile maksymalnie może być wpisanych błędów w komórkach kolumny D? Przy porannej kawie wymęczyłem, z pomocą tabelki pomocniczej, rozwiązanie dla 1-4. Dalej sobie nie wyobrażam. Jedyne co mi przychodzi do głowy, to długie ciągi rozbić na ~połowę i obrabiać w dwóch tabelkach ;) https://obrazki.elektroda.pl/3151115300_... Swoją drogą napisać...
Prawdopodobnie zaprzyjaźnisz się z funkcją split https://www.techonthenet.com/excel/formu...
.Parent dla ActiveWorkbook jest program Excel, wtedy zapisze w sciezku Excel'a naprosto .Path jest sciezka do pliku Split(.Name,".")(0) daje np. 'faktura' Dodano po 2 wtedy[syntax=vb]With ActiveWorkbook Selection.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=.Path & "\" & _ Split(.Name, ".")(0) & ".pdf", _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True,...
Zdaje się, że wystarczy potraktować "zwykłym" Split'em. Sprawdź.
Split plus ewentualnie Join ew Replace
Ok, dzieki. A powiedz mi jak by to można ugryźć funkcją Split?
[syntax=vb] Sub nowy() Const stn = "\\server\vers\" 'sciezka do pliku na serwerze myName = ThisWorkbook.Name klon = Split(myName, ".")(0) typ = Split(myName, ".")(1) ThisWorkbook.SaveAs klon & "_old." & typ Workbooks.Open stn & myName ThisWorkbook.Close True End Sub [/syntax]
Wystarczy np. taka prosta przeróbka: [syntax=vb]strPlik = Application.GetOpenFilename("Pliki Excela (*.xlsx),*.xlsx", 2) sFileName = Split(strPlik, "\")(UBound(Split(strPlik, "\"))) If strPlik = "False" Or UCase(Left(sFileName, 3)) <> "KWS" Then Exit Sub End If[/syntax]
Trzeba sobie radzić inaczej, Np przy pomocy funkcji Dir. Pierwszy, lepszy znaleziony przykład funkcji z wywołaniem.[syntax=vb]Sub testit() myvar = FileList("C:\users\adam\") If TypeName(myvar) <> "Boolean" Then For i = LBound(myvar) To UBound(myvar) Debug.Print myvar(i) Next Else MsgBox "No files found" End If End Sub Function FileList(fldr As...
Ja podpowiem że jak już się wząłeś za makro to jest funkcja Split która rozdziela ciągi po danym znaku/znakach np: tbl = Split(Cells(1, 1), "_") dana = tbl(0) dana2 = tbl(1) Czyli w twoim przypadku: kawalek=Split("700 x 600"," x ") Wynik=Val(kawalek(0)) * Val(kawalek(1))
[syntax=vb] Open "C:\Plik.csv" For Input As #1 While Not EOF(1) Line Input #1, Linia a = Split(Linia, ";") Cells(x, 1) = a(1) x = x +1 Wend [/syntax] Idź tym tropem.
Splitem go i policz. Np [syntax=vb]Private Sub CommandButton1_Click() Dim a As Double Dim b As Double Dim dr As Integer a = TextBox1.Value b = TextBox2.Value liczba = Split(UserForm1.ComboBox1.Value, ",") dr = Len(liczba(1)) Me.Label5.Caption = Round(a + b, dr) End Sub[/syntax]
[syntax=vbscript]Sub Liczby() ow = Cells(Rows.Count, "A").End(xlUp).Row For x = 2 To ow a = Split(Cells(x, 1), ",") b = UBound(a) For y = 0 To b Cells(x, a(y) + 2) = "X" Next Next End Sub [/syntax]
Bez głębszego badania poprawności wprowadzonych dat można np. tak: [syntax=vbscript]Sub Zakres_dat() Dim dane As String, tdane dane = Application.InputBox("Podaj zakres dat", "Wprowadzanie zakresu dat") If Len(dane) = 5 Or Len(dane) = 0 Then Exit Sub tdane = Split(dane, "-") Range("B8") = CDate(tdane(0)) Range("B9") = CDate(tdane(1)) End Sub[/syntax]
W VBA masz funkcję [url=https://www.techonthenet.com/excel/... do rozbicia tekstu wg zadanego separatora. Proponuję - czy funkcjami Excel, czy w VBA - rozbić sobie ten długi ciąg na 3-4 kolumny. Potem użyć wspomnianych funkcji do ponownego połączenia 3-4 kolumn w jeden ciąg "po nowemu" (bądź "po staremu", zależy, który ciąg chcesz...
Pętla, podstawianie (replace), porównywanie długości ciągów (len), rozbijanie ciągów (split), podstawianie, porównywanie, rozbijanie, itd. W zależności, czy warunek spełniony wstawianie wiersza, dodanie wartości, mnożenie *10, lub przepisanie. Mnóstwo kombinacji, ale do zrobienia.
[syntax=vbscript]Sub Linki() ow = Cells(Rows.Count, "A").End(xlUp).Row For x = 1 To ow a = Split(Cells(x, 1), ",") u = UBound(a) For y = 0 To u Cells(x, y + 3) = a(y) Next Next End Sub [/syntax]
Można tak: [syntax=vbscript]Private Sub OK_Click() If NUMV = "" Then d = Split(HHMM, ":") NUMV = Format(d(0) + d(1) / 60, "#0.00") Else HHMM = Int(NUMV) & ":" & Round((NUMV - Int(NUMV)) * 60, 0) End If End Sub [/syntax]
A czy nie prościej byłoby rozbić ciąg Split'em wg spacji? Powstanie 5-cio elementowa tablica, gdzie druga i czwarta wartość to nasze liczby... Przyznam że nie znałem funkcji split ale rzeczywiście to najszybszy sposób (jedna linijka kodu) i prosty w odwołaniach. ( Na marginesie - dla mniej zorientowanych - pierwszy element tablicy ma "index" 0 ) Sub...
(ew. makro) Pobaw się tym: [syntax=vb]Sub Podziel() For x = 1 To Cells(Rows.Count, "A").End(xlUp).Row s = Split(Cells(x, 1), "_") For y = 0 To UBound(s) Cells(x, y + 2) = s(y) Next Next End Sub [/syntax]
A czy mógłbym użyć "split", żeby narzucić excelowi w macro w jaki sposób ma interpretować otwierany plik? czyt. jak go dzielić? Czy on już go sobie wtedy podzieli dodatkowo? Split(Zmienna, "znak rozdzielający")
[syntax=vbscript]Sub Rozdziel() ow = Cells(Rows.Count, "A").End(xlUp).Row For x = 2 To ow a = Split(Cells(x, 1), ".") For y = 2 To 4 Cells(x, y) = a(y - 2) Next Next End Sub [/syntax] Trzeba tylko ustawić format kolumn B:D na tekstowy.
Jak widać nie każdy lubi łowić ryby ;P Zwiększasz tylko numer dla ostatniej pozycji - dla VBA to co masz w komórce nie jest liczbą,a tekstem. Musisz go najpierw rozdzielić funkcją Split() po myślniku, następnie w ostatnim elemencie tablicy zwiększyć liczbę o jeden i na koniec - "skleić" tablicę na powrót w wymaganym formacie. Jak przedmówca wspomniał...
Do czasu aż przeczytasz pomoc o wszystkich instrukcji(Array, Trim, Split, itp.), to nie ma sensu
Blokowanie uzyskasz poprzez założenie hasła. Numerowanie komentarzy poniżej. [syntax=vbscript]Private Sub Worksheet_Change(ByVal Target As Range) Dim a As String If Not Application.Intersect(Range("A1:C10"), Range(Target.Address)) Is Nothing Then i = Environ("USERNAME") & " <" & Now & ">" & vbNewLine & Target & vbNewLine...
która przyrasta o jakieś 500 wierszy miesięcznie W jaki sposób dodawane są wiersze? Może trzeba zmodyfikować sposób importu danych? W takiej formie, funkcjamii wbudowanymi nie będzie łatwo. Prościej byłoby napisać własną (Split i zliczanie w pętlach)...
Można umieścić kod w ThisWorkbook przy zdarzeniu Open. Żeby zabezpieczyć plik przed otwarciem bez makr można ustawić na kluczowe arkusze atrybut VeryHidden (z poziomu edytora VB) a widoczny zostawić dodatkowy pusty arkusz. Przy starcie jeśli warunki są spełnione wystarczy zamienić atrybuty. Tu konieczne hasło ochrony VBA. Przy zamknięciu ustawić na...
Ponieważ dane które pobierasz masz rozdzielone tabulatorem, wystarczy taka prosta przeróbka: [syntax=vb]Private Sub CommandButton1_Click() ComboBox1.Clear ComboBox2.Clear Dim InFile As Integer InFile = FreeFile plik_txt = Application.GetOpenFilename("Pliki txt(*.txt),*txt") Open plik_txt For Input As InFile While Not EOF(InFile) Line Input #InFile,...
Mały problem jest to, że różne osoby mogą być różne liczby wierszy. Jeśli Możesz zapisz tę stronę w pliku .htm i Wyślij wiadomość prywatną Dodano po 2 '2^nd' - to zdanie jest dla każdej osoby? Dodano po 2 Sprobuj [syntax=vb]Sub podzial() Dim bs As Range, bd As Range lr = Cells(Rows.Count, 1).End(xlUp).Row Set bs = Range("A1").Resize(lr) Set bd = Range("G:O")...
https://support.office.com/en-us/article... Ustaw spację i "/" jako przerywniki.
Funkcja Split jest dokładnie opisana w pomocy Excela i w [url=http://msdn.microsoft.com/en-us/lib... W załączniku dwie funkcje użytkownika plus to co wczoraj naskrobałem.
Pliki można przyjąć są txt, a podane rozwiązanie to niemal dokładnie to czego potrzebuję :-) Do pełni szczęścia trzebaby jeszcze wpleść kwestię importowania danych rozdzielonych w plikach źródłowych średnikami do oddzielnych kolumn w arkuszu. Moje starania w tej kwestii na razie nie przynoszą pożądanego rezultatu. Podstaw proszę za linię .Cells(l,...
Niezbyt jasno sformułowałeś to pytanie. Co to jest wskazana kolumna? Jeśli chodzi o adres komórki, z którego chcesz odczytać literę kolumny jako String, to np. tak: [syntax=vbnet]Function LitKolumny(rng As Range) As String LitKolumny = Split(rng.Address, "$")(1) End Function [/syntax]Wywołanie w arkuszu byłoby np. [syntax=text]=LitKolumny(B4)[/syntax]wyn...
Pierwszą część możesz wygodnie zrealizować przy pomocy procedury zdarzeniowej, gdzie warunkiem jest zaznaczenie minimalnej ilości komórek (można ograniczyć do zakresu, kolumn, etc). Przykład dla zaznaczenia >3[syntax=vb]Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 3 Then For Each kom In Target If kom.Row / 2 =...
W sposobie formatowania nic nie zmieniałem. Dodałem funkcję UDF Daty, która zamienia zapis w kolumnie H na tablicę dat, która jest potem używana do definicji reguł formatowania warunkowego. Akceptowalne zapisy w kolumnie H: Pojedyncza data w formacie: d.m.rrrr (z dwiema kropkami) Ciągły przedział dni zapisany z kreską: d-d.m.rrrr (jeden łącznik, dwie...
Dodano po 19 Excel / VBA / wstawianie i kopiowanie wierszy z rozdzieleniem wartości
Ode mnie propozycja połączenia klasycznej formuły z funkcją UDF, która jest bardzo prostą adaptacją funkcji VBA Split: =JEŻELI.BŁĄD(WYSZUKAJ("żżż&... Jeżeli brak tekstu spełniającego...
Z tymi -1,1,0 chodzi o to, że tylko te liczby wchodzą w ciąg 5 elementowy (liczbę L u nas ) czyli moze byc np -1,0,1,0,-1. Już rozumiem. Niestety w tym przypadku moje rozwiązanie przy wystąpieniu "-1" rozjedzie się, więc trzeba je skorygować. Pytanie czy dane w jednej komórce (dana "liczba" ) są takie jak przedstawiłeś w przykładzie czyli cyfry rozdzielone...
[syntax=vbscript]Sub Podziel() Set a = Sheets("Arkusz2") Sheets("Arkusz1").Select y = 1 ow = Cells(Rows.Count, "A").End(xlUp).Row For x = 2 To ow a.Cells(y, 1) = Cells(x, 1) p1 = Split(Cells(x, 2), "|") p2 = Split(Cells(x, 3), "|") b = UBound(p1) For i = 0 To b a.Cells(y, i + 2) = p1(i) a.Cells(y, i + b + 3) = p2(i) Next If b = 0 Then a.Cells(y, 2)...
Nieco w tom stylu [syntax=vb] Sub etapy() Dim r&, x$, y$ r = 2 While Cells(r, 1) <> Empty x = Cells(r, 3) y = Replace(x, ";", "") Cells(r, 3) = Trim(Split(x, ";")(0)) For i = 1 To Len(x) - Len(y) y = Trim(Split(x, ";")(i)) If Len(y) > 0 Then r = r + 1 Rows(r).Insert Cells(r, 1) = Cells(r - 1, 1) Cells(r, 3) = y End If Next r = r + 1 Wend...
Witam [syntax=vbscript]Sub dodaj() a = Split(Range("A1"), Chr(10)) For c = 0 To UBound(a) Suma = Suma + Val(a(c)) Next MsgBox Suma End Sub[/syntax] albo [syntax=vbscript] Sub dod MsgBox Evaluate(Replace(Trim(Range("A1")), Chr(10), "+")) End Sub [/syntax]
[syntax=vbscript]Function DzienWolny(Data As Date) As Boolean Wielkanoc = WorksheetFunction.Floor(DateSerial(Year(... 5, Day(Minute(Year(Data) / 38) / 2 + 56)), 7) - 34 s = "01/01,01/06,05/01,05/03,06/11,08/15,11/... a = Split(s, ",") For x = 0 To UBound(a) b = Split(a(x), "/") d = DateSerial(Year(Data), b(0), b(1)) If d = Data Then...
Bez VBA chyba się nie obędzie. Spróbuj: 1) wpisać do tablic zawartość komórek rozdzielając ciągi Split (tekst, chr(10)) 2) porównać tablice każdy rekord z każdym, jeśli porównanie da wynik negatywny przepisujesz wartość do trzeciej tablicy lub bezpośrednio do komórki wynikowej. Ale: w A2 jest "STOP_RAPORT CTX_CARDMAN" spacja zamiast AltEntera. Takie...
Ile cyfr, czy ile liczb? W temacie podajesz cyfry, w treści liczby. Jeżeli liczby, to: [syntax=vbscript]Function IleLiczb(Komorka As String) As Integer IleLiczb = UBound(Split(Komorka, ",")) + 1 End Function [/syntax] Jeżeli cyfry, to: [syntax=vbscript]Function IleCyfr(Komorka As String) As Integer i = Len(Komorka) For x = 1 To i a = Asc(Mid(Komorka,...
może jest jakiś program, który to potrafi? Oczywiście. Excel, a konkretnie VBA ;) Zainteresuj się funkcją Split . Kilka przykładów znajdziesz z pewnością przy pomocy forumowej wyszukiwarki. Rozbijanie ciągów funkcjami arkuszowymi to dość karkołomne zajęcie, a długość formuł mierzona jest w łokciach ;)
w trzeciej sama trasa wypisana w formacie: sklep_xxx-sklep_yyy-sklep_zzz Jeśli dobrze zrozumiałem, to myślnik jest znakiem rozdzielającym nazwy sklepów, których trzeba wyszukać? Jeśli tak, to najprościej rozbić ciąg funkcją Split i zapisać w tablicy. Następnie wyszukać kolejne wartości w pętli For, gdzie licznikiem będzie rozmiar tablicy. Wynik można...
Jedynie odwołując się do indeksów arkuszy zamiast do nazw. Np po kolejności komórek w kolumnie. [syntax=vb]Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) arg = Split(Target.SubAddress, "!") sh = Target.Parent.Row - 1 'link w 4 wierszu dot Sheets(3) adr = arg(1) With Sheets(sh) .Visible = True .Activate .Range(adr).Select End With End...
Na początek: Ad.1 i 3 Wstaw nowy moduł do pliku 'z_którego_kopiuje.xls' i wklej poniższy kod [syntax=vba]Option Explicit Sub KopiujAle() Dim fd As FileDialog, wkb As Workbook, test As String Set fd = Application.FileDialog(msoFileDialogOpen... With fd .InitialFileName = ThisWorkbook.Path .AllowMultiSelect = False .Filters.Clear .Filters.Add "Pliki Excela",...
[syntax=vbscript]Function DwaMyslniki(Tekst As String) As Boolean a = Split(Tekst, "-") If UBound(a) = 2 Then DwaMyslniki = True End Function[/syntax]
Jeśli w tych plikach ".csv" jest dużo danych, dużo linijek, to nie będzie to najlepsza metoda (ten załączony kod z odczytem linijka po linijce) odczytu tych plików - zbyt długo będą one otwarte. Lepiej by było to odczytywać przy pomocy LOF, np.: [syntax=vba] Open sciezka & plik For Input As #1 zaw_pliku = Input$(LOF(1), #1) Close #1 [/syntax] lub [syntax=vba]...
:) [syntax=vbscript]Sub Log_Ok() Dim ostkomzakr As String Dim LogOk As Range With ThisWorkbook.Sheets("Jakiś_arkusz").Rang... ostkomzakr = Split(.Address(0, 0), ":", -1, 1)(1) Set LogOk = .Find(Environ("Username"), .Range(ostkomzakr), xlFormulas, xlWhole, xlByRows) If LogOk Is Nothing Then Set LogOk = .Find(Environ("Username"), .Range(ostkomzakr),...
Jeżeli pola są oddzielone spację, wystarczy taka modyfikacja pętli: [syntax=vb]Do While Not EOF(1) Line Input #1, TextLine If Left(TextLine, 13) = "121401_2.0011" Then arr = Split(TextLine, " ") wsdane.Cells(i, 1).Value = arr(0) wsdane.Cells(i, 2).Value = arr(1) wsdane.Cells(i, 3).Value = arr(2) wsdane.Cells(i, 4).Value = arr(3) wsdane.Cells(i, 5).Value...
Wklej do modułu (w miejsce "Arkusz1" wpisz właściwą nazwę) http://obrazki.elektroda.pl/4895463200_1... Indeksy zaczynają się od zera, więc If lCol = 2 And lRow > 2 then to ograniczenie dla komórek od C4 w dół. Jeśli data z godziną (rys), to 'Now()' zamiast 'Date()'
Najprościej funkcją 'Format' [syntax=vb]'jeżeli format z kropkami (jak w poście: 24.09.2013 Magazyn.txt.) strNazwa = Format(Date, "dd.mm.yyyy") & " Magazyn.txt" sciezka = "c:\dir\subdir\" 'nie musi być jesli ścieżka taka sama Open strNazwa For Input As #1 ' sciezka & strNazwa Do Until EOF(1) = True 'i tu czytanie Input lub Line Input ze Split i pętlą...
Jeśli Np "europa01dom" spełnia 2 kryteria, 'europa' oraz '01dom', to co w takim przypadku? Widzę tu zastosowanie funkcji Split z tablicą tymczasową do sprawdzania duplikatów, lub coś w tym rodzaju...
Masz szczęście - akurat miałem pod ręką podobny plik, który wystarczyło tylko w kilku linijkach przerobić. Dla wiadomości - problem z Twoimi danymi źródłowymi jest bardziej skomplikowany. To nie jest znak Entera (zwykle kombinacja dwóch znaków: CR LF), tylko sam znak LineFeed (LF). Z tego też powodu jest to wszystko jakby zapisane w jednej linijce -...
Zmodyfikowany kod: [syntax=vbscript]Sub Grupy2() Dim ow As Long, x As Long, nr As Long, afterP As Boolean ow = Cells(Rows.Count, "A").End(xlUp).Row For x = 1 To ow If InStr(Cells(x, "A"), "/") > 0 Then ' czy jest "/" ? Select Case Cells(x, "E") Case "P2" nr = Split(Cells(x, "A"), "/")(1) ' pozycja w grupie Cells(x, "H") = IIf(nr = 1 Or afterP, "B",...
Wnioskuje, że nie da się wykonać tego zadania vba. Ktoś pomoże? Da się i to nie jest nawet bardzo skomplikowane. Dwie pętlę, jakiś Split lub Mid i jazda. Ale są wakacje, Krzysztofy, Anny, Grażyny, ... ;) Trochę cierpliwości.
Skoro ma być w VBA... Przykład z tablicą i... InputBox'em ;) [syntax=vb]Sub aver() tekst = InputBox("Wpisz liczby oddzielając średnikiem", "Obliczanie średniej") tekst = Replace(tekst, " ", "") 'wyrzucamy spacje tekst = Replace(tekst, ":", ";") 'mogło się komuś omsknąć tekst = Replace(tekst, ".", ",") 'to sie często zdarza tablica = Split(tekst, ";")...
Najprościej b = Split(Cells(5, 10), "/") a = b(0) Cells(5, 10) = a + 1 & "/" & b(1)
[syntax=vb]Sub sciezki() Dim sciezka As Variant 'opcja1 - na tablicy sciezka = "c:\moje dokumenty\wiesiek\plik 123.xlsx" sciezka = Split(sciezka, "\") nazwa = sciezka(UBound(sciezka)) ReDim Preserve sciezka(UBound(sciezka) - 1) 'obcinamy ostatnią część tablicy sciezka = Join(sciezka, "\") 'kleimy na nowo MsgBox nazwa MsgBox sciezka 'opcja2 - na pozycji...
Niestety nie zobaczę twojego pliku (pobieranie zabronione), ale mam dla ciebie materiał do przemyśleń: [syntax=vbscript] Private Sub testEl() Dim y As Long, i As Integer, V As Integer, v1 As Integer Dim Tb() As String y = 2 Do While (Cells(y, 1) <> "") Tb = Split(Cells(y, 1), " ") V = 0 For i = LBound(Tb) To UBound(Tb) Step 2 Select Case Tb(i...
Może taka prosta funkcja: [syntax=vbscript]Function NajnowszaData(Wej As String) As Date Dim Daty() As Date d = Split(Wej, " ") For x = 0 To UBound(d) If IsDate(d(x)) Then y = y + 1 Next ReDim Daty(y - 1) y = 0 For x = 0 To UBound(d) If IsDate(d(x)) Then Daty(y) = d(x) y = y + 1 End If Next ub = UBound(Daty) For x = 0 To ub - 1 For y = x + 1 To ub If...
Proponuję użycie funkcji UDF: [syntax=vbscript]Function Par(where As String, list) As String Dim elem, tabl, arr, res arr = Split(where) For Each elem In list tabl = Filter(arr, elem) If UBound(tabl) >= 0 Then For Each res In tabl If elem = res Then Par = elem: Exit Function Next wyn End If Next elem End Function[/syntax]Wywołanie: [syntax=text]=Par(tekst_do_sprawdzenia;....
No właśnie. To może być to. U mnie (po zmianie na październik) działa. Ale, uwaga, format daty systemowej mam zgodny z tym w CSV (Vista 32bit, Office 2007). Bo przy konwersji daty w "odwrotnym" formacie, Np z listopada może zrobić się marzec: https://obrazki.elektroda.pl/1929850600_... Tak się jeszcze zastanawiam. Zamiast porównywać...
[syntax=vbscript]Sub Konwersja() With Application.FileDialog(msoFileDialogFold... .Title = "Wybierz folder z plikami CSV" .InitialFileName = Environ("userprofile") & "\Desktop" If .Show = -1 Then f = .SelectedItems(1) End With If f = "" Then Exit Sub x = "\PlikiExcel" If Dir(f & x, vbDirectory) = "" Then MkDir (f & x) csv = f &...
https://stackoverflow.com/questions/3789... Tu masz dobry przykład jak to wczytać w vba (musisz w split zmienić przecinek na ;) (kolejne kolumny to kolejne numery w drugim argumencie funkcji cells. Co do pierwszego argumentu - sprawdź na końcu czy jest mniejszy od np 500000 i wtedy robisz...
Spróbuj z rozdzieleniem po wczytaniu całej linii. Np[syntax=vb]Sub wczytajPlikTekstowy() Close #1 'dla pewności Open ".\dane.txt" For Input As #1 wrs = 1 Do Until EOF(1) kol = 1 Line Input #1, liniatekstu tbl = Split(liniatekstu, "|") For i = 0 To UBound(tbl) Cells(wrs, kol) = tbl(i) If IsNumeric(Cells(wrs, kol)) Then Cells(wrs, kol) = Cells(wrs, kol)...
Zawsze warto napisać, w której wersji Excela ma pracować to rozwiązanie, bo w różnych wersjach są dostępne różne funkcje. Jeśli chodzi o rozdzielenie formułą do osobnych komórek danych rozdzielonych średnikami, to na upartego się da, ale to dość złożone. W tym przypadku sugerowałbym użycie VBA i funkcji UDF, która przetwarzałaby listę rozdzieloną średnikami....
Witam, Mam następujący kod do tworzenia arkusza o nazwach 1,2,3..... Sub DodajArkusz() Dim sh As Worksheet Dim intName As Integer Dim shName As String Dim strNazwa As String Dim arr As Variant strNazwa = "" intName = 1 For Each sh In ThisWorkbook.Worksheets shName = sh.Name If Left(shName, Len(strNazwa)) = strNazwa...
[syntax=vb]Sub Rozdziel() For x = 1 To Cells(Rows.Count, "A").End(xlUp).Row a = Split(Cells(x, 1), " ") Cells(x, 2) = a(0) Cells(x, 3) = a(2) Next End Sub [/syntax] I tak dalej.
Jak by ktoś kiedyś szukał to poniżej działający skrypcik vbs: Option Explicit Dim objUser, strExcelPath, objExcel, xlBook1, objSheet, _ objFSO, objFile, aline, aLines, irow, icol Const ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject... Set objFile = objFSO.OpenTextFile("D:\FIRMY\ARP\1\1\1.... ForReading) Set objExcel = CreateObject("Excel.Application")...
[syntax=vb]Sub numery() Dim wz As Worksheet, rs&, re&, i&, j& Dim bs As Range, bd As Range Set bs = ThisWorkbook.Sheets("baza").Range("B1:C1... 'platform, tara Set bd = ThisWorkbook.Sheets("start").Range("B1:C... 'wagony Set wz = ThisWorkbook.Sheets("wykaz_zdawczy") wz.Activate rs = 17 'wiersz poczatkowy re = wz.Cells.Find("podpis").Row...
Mała poprawka: [syntax=vbscript]Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Column = 11 Then Dim ar() As String q = 0 a = Split(Target, " ") For aa = 0 To UBound(a) For x = 5 To 13 If Cells(x, 4) = a(aa) Then For Z = 5 To 9 If Cells(x, Z) = "X" Then c = Cells(4, Z) If InStr(1, b, c) = 0 Then ReDim Preserve ar(q)...
Przy czym plik txt jest koszmarnie sformatowany Dlaczego zaraz koszmarnie?? Całkiem przyzwoicie - dane powtarzają się w przewidywalnych grupach. Wystarczy podzielić na tablicę wg spacji i w zależności od długości tablicy skopiować dane w odpowiednią komórkę: [syntax=vb]Private Sub CommandButton1_Click() Dim linia As String Dim tabl() As String Application.ScreenUpdating...
Zwykłymi formułami to dość trudno uzyskać. Napisałem funkcję UDF o nazwie Podziel, której podaje się jako argument zakres danych albo nazwę tabeli. W wyniku otrzymuje się tablicę z wynikami. Można ją wyświetlić jako formułę tablicową, jak pokazałem w komórkach E10:G14 albo wprowadzić do tabeli Excela indywidualnie za pomocą funkcji INDEKS. Można to...
Witam, Dobrze zacząłeś z tym wczytywaniem pliku, trzeba było to kontynuować. Proponuję wyszukiwanie załatwić kodem, np: If Right(t, 1) = ";" sprawdza czy w grupie znaleziono linię 333. Jeśli nie to po średniku będzie pusty ciąg.
z funkcjami InStr, Mid, Len Raczej Split. [syntax=vbscript]Sub DaneOsobowe() a = InputBox("Podaj dane rozdzielając je przecinkiem.") b = Split(a, ",") For x = 0 To UBound(b) Cells(x + 1, 1) = LTrim(b(x)) Next End Sub [/syntax]
Przetestuj kod: [syntax=vb]Sub uzupelnij() Dim shSrc As Excel.Worksheet Dim shDest As Excel.Worksheet Dim lLstRwSrc& Dim rngTmp As Excel.Range Dim colUniq As Collection Dim vBox As Variant Set colUniq = New Collection Set shSrc = Sheets("baza") Set shDest = Sheets("PRE-ALERT") With shSrc lLstRwSrc = .Cells(Rows.Count, 1).End(xlUp).Row Set rngTmp = Range(.Cells(2,...
Jego przeznaczeniem jest użytkowanie przez bardzo amatorską osobę Już podpowiadam. Dla w/w osoby: "4D, 5D, 5N, 29N" ; "4d ,5d ,5n ,29n" ; "4D,5D,5N,29N" ; "4D. 5D. 5N .29N" w zasadzie wygląda tak samo. O pomyleniu literki, bo przecież można się pomylić, nawet nie wspomnę. Jeśli 15 razy dziennie nie chcesz słyszeć: "Panie kefler! Ten pana program znowu...
Następnym razem jako przykład załącz skoroszyty Excela a nie zrzuty ekranu. Przetestuj kod: [syntax=vbscript]Option Base 1 Sub podziel_autorow() Dim tblTmp() As String Dim lLstRw& Dim i&: i = 1 Application.ScreenUpdating = False lLstRw = Cells(Rows.Count, 1).End(xlUp).Row Columns(3).EntireColumn.Insert Cells(1, 2).Value = "autorzy" Cells(1, 3).Value...
Nie wchodząc w szczegóły dlaczego tak a nie inaczej (np wykorzystać inny namiar) wykorzystaj split(ciąg tekstowy,znak rozdzielający). Bazą jest tu twój " ciąg ": nawisko|spacja|imię Więc jak wpiszesz np.: tekst = split( ciąg ," ") ' między cudzysłowami jest spacja (w innym przypadku inny "separator") to nazwisko = tekst(1) imię = tekst(2) Rozumiesz?
[syntax=vbscript] Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _ (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long Private Const MAX_PATH As Long = 260 '~~> Change this where and how you want to save the file Const FlName = "C:\MyWorkbook.txt" Sub Sample() Dim tmpFile As String Dim MyData As String, strData()...
[syntax=vb]Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Column = 8 Then h = Split("WIN;BOK;CC;OP", ";") hv = Target.Value For x = 0 To UBound(h) If hv = h(x) Then fl = True Next If Not fl Then MsgBox "Błąd" End If End Sub [/syntax]
Przetestuj [syntax=vb]Option Explicit Sub Import_TXT_FSO_SPLIT() Dim oFSO As Object 'File System Object Dim oFld As Object 'Obiekt Folder Dim oFls As Object 'Obiekt Plik Dim oTemp As Object Dim iRw As Integer: iRw = 1 'wiersz do którego wpisywane są dane Dim sItem As String 'katalog z plikami Dim sExt As String 'rozszerzenie pliku Dim fl As Object Dim...
[syntax=vbscript]Sub Linia() l = "$S$ewidencja#|#karta#|#1512PL#|#karta LR HISL LC-2#|##|#S04557222#|#2040524#|#z węzła#|#Olecko/S01#|##|#S04557209#|#slot... magazynu#|#Suwałki/MO1#|##|##|##|##|#spr... $S$ewidencja#|#karta#|#1512PL#|#karta LR HISL LC-2#|##|#S04557223#|#2005987#|#z węzła#|#Olecko/S01#|##|#S04557209#|#slot... magazynu#|#Suwałki/MO1#|##|##|##|##|#spr...
gdyby w funkcji ZNAJDŹ można było użyć symbolu wieloznacznego "*" W funkcji ZNAJDŹ nie można, ale jest bardzo podobna funkcja SZUKAJ.TEKST, w której można używać symboli wieloznacznych. Różni się od ZNAJDŹ (poza symbolami wieloznacznymi) tym, że nie rozróżnia małych/wielkich liter. Jeśli z tą funkcją sobie poradzisz to będziesz miał satysfakcję. Ja...
Poleceniem Shell możesz uruchomić plik .bat z taką treścią: netsh wlan show network > C:\PlikiExcel\Siec.txt A potem wyciąć nazwę sieci z pliku Siec.txt. [syntax=vbscript]Sub Siec() Shell ("C:\PlikiExcel\a.bat") 'Plik a.bat: netsh wlan show network > C:\PlikiExcel\Siec.txt Set FSO = CreateObject("Scripting.FileSystemObject... Set TSO = FSO.OpenTextFile("C:\PlikiExcel\Siec.txt...
w moim przypadku by to nie zadziałało Zadziałało, zadziałało. Tak: [syntax=vbscript]Sub Drukowanie() Application.ScreenUpdating = False s = "A1 A3 A8 A13 A14" i = InputBox("Numer wiersza") Set a = ActiveSheet Set b = Workbooks.Open(Environ("userprofile") & "\Desktop\Zeszyt2.xlsm") k = Split(s, " ") For x = 0 To UBound(k) b.Sheets(1).Range(k(x)) = a.Cells(i,...
:arrow: JRV - Ciekawe podejście Z tym że może wystąpić kłopot przy błędnych danych tzn. jak np. zabraknie jednego ";" to np. zmienna3 wędruje w miejsce zmiennej 2 Ja poszedłem trochę inną drogą (dodałem komunikaty "kierunkowe" w razie błędu) [syntax=vb]Sub podziel() Dim ostWiersz As Double Dim x As Integer, y As Integer, i As Integer, j As Integer,...
[syntax=vbscript]Sub Liczniki() Open "C:\PlikiCSV\Gauges_Data.csv" For Input As #1 For x = 1 To 6 Line Input #1, a Next w = 1 While Not EOF(1) Line Input #1, a b = Split(a, Chr(9)) u = UBound(b) For x = 0 To u Cells(w, x + 1) = b(x) Next w = w + 1 Wend Close #1 Columns("A:A").NumberFormat = "[$-F400]h:mm:ss AM/PM" End Sub [/syntax]
Jeśli arkusz z najświeższą datą w nazwie jest zapiswany zawsze "na końcu", to sam sobie poniekąd odpowiedziałeś kodem swojego makra: [syntax=vbscript]ActiveWorkbook.Sheets(S... Natomiast, jeśli istnieje obawa, że arkusz z najświeższą datą nie zawsze będzie jako ostatni w skoroszycie, to można np. tak: [syntax=vbscript]Sub...
ja dopiero raczkuję w funkcjach VBA No to taka prosta funkcja: [syntax=vbscript]Function RachunekBankowy(Tekst As String) As String a = Split(Tekst, " ") u = UBound(a) For x = 0 To u b = Trim(a(x)) If Len(b) = 26 And IsNumeric(b) Then RachunekBankowy = b Exit For End If Next End Function [/syntax]
Pozwolę sobie ubrać ten kod w wygodną procedurę. [syntax=vb]Sub WyslijMejla(Uzytkownik As String, Haslo As String, SerwerSMTP As String, Tytul As String, Tresc As String, OdKogo As String, DoKogo As String, Zalacznik As String) Dim KonfiguracjaKonta As Object, Mejl As Object Set KonfiguracjaKonta = CreateObject("CDO.Configuration") Set Mejl = CreateObject("CDO.Message")...
Zastanów się nad wstępną normalizacją kodów, bo czeka Cię nie lada zadanie... http://obrazki.elektroda.net/75_12682516... W VBA można wykorzystać funkcję Split ale przy tym ostatnim zapisie założenie bierze w łeb i trzeba szukać pierwszej liczby w łańcuchu. Może byłoby i łatwiej. Jeśli tablica po rozbiciu łańcucha miałaby mniej niż 4 elementy,...
Cześć, Nie wiem czy dobre forum. próbuje ułatwić sobie troszkę życie ;) Potrzebuje aby Excel (skoroszyt binarny) za pomocą makra tworzył nowy folder wg daty zawartej w komórce. Napisałem coś takiego ale nie działa, ktoś podpowie co zmienić? Sub StworzFolder() Dim FullPath As String Dim PATH As Variant Dim Folder As String Dim i As Integer FullPath =...
sprężarka split pompa split ogrzewanie split
napięcie zasilające jonizator samsung wymiana klawiatury kabina prysznicowy panel
sterownik movera sterownik movera
LiFePO4 314Ah – jakie kable, zabezpieczenia, BMS i obudowa? Ceny komponentów 2024 Fujitsu-Siemens Amilo – schematy, boardview, Service Manual, identyfikacja płyty głównej