Wklejanie do Calca zakresu liczb w odpowiednie kolumny
Wklejanie do Calca zakresu liczb w odpowiednie kolumny
Witam.
Mam bazę wyników losowania Lotto z kilku tysięcy losowań w pliku .xls format danych to 1,2,3,4 itd. , chcę to wkleić do Calca ,ale tak żeby poszczególne liczby automatycznie znalazły się w określonych komórkach.
Jak wiadomo wynik losowania to 6 liczb z zakresu od 1 do 49.
Wiersze (w zakresie od 1 do 49 ) zawierają wyniki losowania ( 6 liczb z tego zakresu) gdzie kolumna "A" ma zawierać tylko cyfrę 1 (o ile w losowaniu wystąpi) do kolumny "AX" z przypisaną liczbą 49.
Wiersze zawierają daty poszczególnych losowań.
Chcę ,żeby po komendzie "wklej" dane zostały umieszczone w sposób pokazany na obrazku :
Po znalezieniu rozwiązania jak tego dokonać ; kolumna "A" i wiersz "1" zostaną usunięte . W tej chwili w kolumnie "A" znajdują się wyniki losowań a w wierszu "1" pomocnicze liczby od 1 do 49.
Czy jest możliwe automatyczne wklejenie danych w ten sposób?
Mam bazę wyników losowania Lotto z kilku tysięcy losowań w pliku .xls format danych to 1,2,3,4 itd. , chcę to wkleić do Calca ,ale tak żeby poszczególne liczby automatycznie znalazły się w określonych komórkach.
Jak wiadomo wynik losowania to 6 liczb z zakresu od 1 do 49.
Wiersze (w zakresie od 1 do 49 ) zawierają wyniki losowania ( 6 liczb z tego zakresu) gdzie kolumna "A" ma zawierać tylko cyfrę 1 (o ile w losowaniu wystąpi) do kolumny "AX" z przypisaną liczbą 49.
Wiersze zawierają daty poszczególnych losowań.
Chcę ,żeby po komendzie "wklej" dane zostały umieszczone w sposób pokazany na obrazku :
Po znalezieniu rozwiązania jak tego dokonać ; kolumna "A" i wiersz "1" zostaną usunięte . W tej chwili w kolumnie "A" znajdują się wyniki losowań a w wierszu "1" pomocnicze liczby od 1 do 49.
Czy jest możliwe automatyczne wklejenie danych w ten sposób?
OpenOffice 4.1.2 na Windows 7
Re: Wklejanie do Calca zakresu liczb w odpowiednie kolumny
Witam
To o co pytasz można zrobić za pomocą funkcji arkuszowych (a to nie ten dział), ale skoro już tu zadałeś to pytanie - proszę bardzo.
kod ten jest niezoptymalizowany więc szybkość działania zależy od twojego sprzętu, ale z tego co wywnioskowałem jest to jednorazowe działanie - więc sobie poczekaj.
Przed uruchomieniem usuń wiersz "1"
Pozdrawiam
To o co pytasz można zrobić za pomocą funkcji arkuszowych (a to nie ten dział), ale skoro już tu zadałeś to pytanie - proszę bardzo.
Kod: Zaznacz cały
REM ***** BASIC *****
dim rozdzielDane(5) as integer
Sub Lotto
'deklaracja zmiennych
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
dim dane as string
dim separator as string
dim liczRow as integer
dim liczCol as integer
Dim ileWierszy as integer
dim i as integer
dim i2 as integer
Dim cell2 as Object
Dim Col As Object
separator = ","
liczRow = 0
liczCol = 0
Doc = ThisComponent
Sheet = Doc.Sheets(0)
ileWierszy = GetMaxRow(sheet)
Cell2 = Sheet.getCellByPosition(0, liczRow)
for i=0 to ileWierszy
Cell = Sheet.getCellByPosition(liczCol, liczRow)
Cell2 = Sheet.getCellByPosition(0, i)
dane = Cell2.getString
daane= znajdz(dane, separator)
for i2= 0 to 5
Cell = Sheet.getCellByPosition(rozdzielDane(i2), liczRow)
cell.setvalue(rozdzielDane(i2))
next
liczRow = i+ 1
next
For I = 0 To 48
Col = Sheet.Columns(I)
Col.OptimalWidth = True
Next I
End Sub
Function GetMaxRow (oSheet as object) as Long
' Get last used row in Sheet
Dim oCellCursor as Object
oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
GetMaxRow = oCellCursor.getRangeAddress.EndRow
end function
Function Znajdz(Source As String, Search As String)', NewPart As String)
Dim Result As String
Dim StartPos As Long
Dim CurrentPos As Long
dim licz as integer
Result = ""
StartPos = 1
CurrentPos = 1
licz = 0
If Search = "" Then
Result = Source
Else
Do While CurrentPos <> 0
CurrentPos = InStr(StartPos, Source, Search)
If CurrentPos <> 0 Then
Result = Result + Mid(Source, StartPos, CurrentPos-1)
rozdzielDane(licz)= Result
licz = licz + 1
Source = right(Source, Len(Source) - CurrentPos)
Result = ""
Else
Result = Result + Mid(Source, StartPos, Len(Source))
rozdzielDane(licz)= Result
End If
Loop
End If
znajdz = Result
End Function
Przed uruchomieniem usuń wiersz "1"
Pozdrawiam
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Wklejanie do Calca zakresu liczb w odpowiednie kolumny
Bardzo dziękuję za szybką i merytoryczną odpowiedź na moje pytanie !
Wstyd się przyznać , nie wiem jednak jak z pomocy skorzystać ; próbowałem wyszukać wskazówek w pomocy O.O. i na forum - nic jednak nie znalazłem o "funkcjach arkuszowych".
Bardzo proszę o wskazówkę co powinienem zrobić z podanym skryptem.
Pozdrawiam
Dziękując jednocześnie za wyrozumiałość co do mojego zaawansowania w obsłudze Open Office
Wstyd się przyznać , nie wiem jednak jak z pomocy skorzystać ; próbowałem wyszukać wskazówek w pomocy O.O. i na forum - nic jednak nie znalazłem o "funkcjach arkuszowych".
Bardzo proszę o wskazówkę co powinienem zrobić z podanym skryptem.
Pozdrawiam
Dziękując jednocześnie za wyrozumiałość co do mojego zaawansowania w obsłudze Open Office
OpenOffice 4.1.2 na Windows 7
Re: Wklejanie do Calca zakresu liczb w odpowiednie kolumny
Wejdź w Narzędzia > Makra > Zarządzaj Makrami > OpenOffice.org - Basic > Zarządzaj > Nowy > (twoja nazwa) Edytuj > wklejasz kod od kolegi > zapisujesz > zamykasz
Potem usuwasz 1 wiersz (tak jak zasugerował) i wchodzisz w >Narzędzia > Makra > Wykonaj Makro > Moje makra > Standard > (nazwa twojego makra) > Uruchom
Potem usuwasz 1 wiersz (tak jak zasugerował) i wchodzisz w >Narzędzia > Makra > Wykonaj Makro > Moje makra > Standard > (nazwa twojego makra) > Uruchom
Standardowa diagnostyka rozwiązuje 90% problemów typu "wcześniej działało, ale już nie działa".
Przepis na LibreOffice
Uzyskałeś pomoc? Poinformuj innych o sprawdzonym rozwiązaniu i podziękuj. Dodaj [SOLVED] w tytule.
Przepis na LibreOffice
Uzyskałeś pomoc? Poinformuj innych o sprawdzonym rozwiązaniu i podziękuj. Dodaj [SOLVED] w tytule.
Re: Wklejanie do Calca zakresu liczb w odpowiednie kolumny
Dziękuję!
Wszystko się extra udało ;Calc wstawił liczby tam gdzie chciałem
Jeżeli można ,to prosił bym o pomoc w kolejnym problemie ;
na fotce w kolumnie "A" są wyniki losowań z poszczególnych sesji, musiałem dodać kolejne wyniki po marcu 2011.
Problem jest taki ,że są dostępne w formacie bez przecinków (liczby rozdziela spacja) i makro staje na pierwszym ciągu liczb bez przecinków.
Czy jest jakiś sposób ,żeby hurtowo wprowadzić przecinki między liczbami w poszczególnych wynikach, które chcę dodać do bazy (czy jest sposób ,żeby spacje zamienić na przecinki ?
Dziękuję i pozdrawiam
Wszystko się extra udało ;Calc wstawił liczby tam gdzie chciałem
Jeżeli można ,to prosił bym o pomoc w kolejnym problemie ;
na fotce w kolumnie "A" są wyniki losowań z poszczególnych sesji, musiałem dodać kolejne wyniki po marcu 2011.
Problem jest taki ,że są dostępne w formacie bez przecinków (liczby rozdziela spacja) i makro staje na pierwszym ciągu liczb bez przecinków.
Czy jest jakiś sposób ,żeby hurtowo wprowadzić przecinki między liczbami w poszczególnych wynikach, które chcę dodać do bazy (czy jest sposób ,żeby spacje zamienić na przecinki ?
Dziękuję i pozdrawiam
OpenOffice 4.1.2 na Windows 7
Re: Wklejanie do Calca zakresu liczb w odpowiednie kolumny
Witam
Tutaj kłaniają się podstawowe wiadomości edycyjne - Znajdź i zmień.
Poza tym jak byś przeanalizował kod, który ci podałem, znalazłbyś linie.
Zmieniając przecinek na spacje uzyskasz to co chcesz, z małymi wyjątkami, które spowodują wystąpienie błędu.
Pozdrawiam
Tutaj kłaniają się podstawowe wiadomości edycyjne - Znajdź i zmień.
Poza tym jak byś przeanalizował kod, który ci podałem, znalazłbyś linie.
Kod: Zaznacz cały
separator = ","
- Dane w skoroszycie muszą być jednego typu, czyli nie może być sytuacji że są przecinki i spacje reprezentujące separator. Jeśli zmienisz znak separatora, to przed uruchomieniem makra, przerobione dane przenieś do innego skoroszytu.
- Nie może być też sytuacji że separator (spacja, przecinek, itp.) występuje na początku danego tekstu. Tu także kłania się Znajdź i zmień
Pozdrawiam
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Wklejanie do Calca zakresu liczb w odpowiednie kolumny
Witam ponownie po 7 latach , odgrzewam kotleta
Już nie pamiętam jak przestałem grać w lotka ; teraz semafor przestawił mi się na MultiMulti.
Jak zmienić skrypt na 80 liczb?
Już nie pamiętam jak przestałem grać w lotka ; teraz semafor przestawił mi się na MultiMulti.
Jak zmienić skrypt na 80 liczb?
OpenOffice 4.1.2 na Windows 7
Re: Wklejanie do Calca zakresu liczb w odpowiednie kolumny
jak przerobić poniższy skrypt dla 20 liczb z 80?
REM ***** BASIC *****
dim rozdzielDane(5) as integer
Sub Lotto
'deklaracja zmiennych
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
dim dane as string
dim separator as string
dim liczRow as integer
dim liczCol as integer
Dim ileWierszy as integer
dim i as integer
dim i2 as integer
Dim cell2 as Object
Dim Col As Object
separator = ","
liczRow = 0
liczCol = 0
Doc = ThisComponent
Sheet = Doc.Sheets(0)
ileWierszy = GetMaxRow(sheet)
Cell2 = Sheet.getCellByPosition(0, liczRow)
for i=0 to ileWierszy
Cell = Sheet.getCellByPosition(liczCol, liczRow)
Cell2 = Sheet.getCellByPosition(0, i)
dane = Cell2.getString
daane= znajdz(dane, separator)
for i2= 0 to 5
Cell = Sheet.getCellByPosition(rozdzielDane(i2), liczRow)
cell.setvalue(rozdzielDane(i2))
next
liczRow = i+ 1
next
For I = 0 To 48
Col = Sheet.Columns(I)
Col.OptimalWidth = True
Next I
End Sub
Function GetMaxRow (oSheet as object) as Long
' Get last used row in Sheet
Dim oCellCursor as Object
oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
GetMaxRow = oCellCursor.getRangeAddress.EndRow
end function
Function Znajdz(Source As String, Search As String)', NewPart As String)
Dim Result As String
Dim StartPos As Long
Dim CurrentPos As Long
dim licz as integer
Result = ""
StartPos = 1
CurrentPos = 1
licz = 0
If Search = "" Then
Result = Source
Else
Do While CurrentPos <> 0
CurrentPos = InStr(StartPos, Source, Search)
If CurrentPos <> 0 Then
Result = Result + Mid(Source, StartPos, CurrentPos-1)
rozdzielDane(licz)= Result
licz = licz + 1
Source = right(Source, Len(Source) - CurrentPos)
Result = ""
Else
Result = Result + Mid(Source, StartPos, Len(Source))
rozdzielDane(licz)= Result
End If
Loop
End If
znajdz = Result
End Function
REM ***** BASIC *****
dim rozdzielDane(5) as integer
Sub Lotto
'deklaracja zmiennych
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
dim dane as string
dim separator as string
dim liczRow as integer
dim liczCol as integer
Dim ileWierszy as integer
dim i as integer
dim i2 as integer
Dim cell2 as Object
Dim Col As Object
separator = ","
liczRow = 0
liczCol = 0
Doc = ThisComponent
Sheet = Doc.Sheets(0)
ileWierszy = GetMaxRow(sheet)
Cell2 = Sheet.getCellByPosition(0, liczRow)
for i=0 to ileWierszy
Cell = Sheet.getCellByPosition(liczCol, liczRow)
Cell2 = Sheet.getCellByPosition(0, i)
dane = Cell2.getString
daane= znajdz(dane, separator)
for i2= 0 to 5
Cell = Sheet.getCellByPosition(rozdzielDane(i2), liczRow)
cell.setvalue(rozdzielDane(i2))
next
liczRow = i+ 1
next
For I = 0 To 48
Col = Sheet.Columns(I)
Col.OptimalWidth = True
Next I
End Sub
Function GetMaxRow (oSheet as object) as Long
' Get last used row in Sheet
Dim oCellCursor as Object
oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
GetMaxRow = oCellCursor.getRangeAddress.EndRow
end function
Function Znajdz(Source As String, Search As String)', NewPart As String)
Dim Result As String
Dim StartPos As Long
Dim CurrentPos As Long
dim licz as integer
Result = ""
StartPos = 1
CurrentPos = 1
licz = 0
If Search = "" Then
Result = Source
Else
Do While CurrentPos <> 0
CurrentPos = InStr(StartPos, Source, Search)
If CurrentPos <> 0 Then
Result = Result + Mid(Source, StartPos, CurrentPos-1)
rozdzielDane(licz)= Result
licz = licz + 1
Source = right(Source, Len(Source) - CurrentPos)
Result = ""
Else
Result = Result + Mid(Source, StartPos, Len(Source))
rozdzielDane(licz)= Result
End If
Loop
End If
znajdz = Result
End Function
OpenOffice 4.1.2 na Windows 7