Ryslaw [ Patrycjusz ]
Pomoc przy Excelu - wklejanie danych
Mam pewien problem z Excelem, z którym nie mogę sobie poradzić - chodzi o wklejanie danych do odfiltrowanych kolumn.
Załóżmy, że mam dwa arkusze Excela.
- Arkusz A zawiera mnóstwo różnych danych, z których odfiltrowałem potrzebne mi wiersze.
- Arkusz B zawiera dane, które chcę przekleić do odfiltrowanych wierszy w Arkuszu A.
Problem w tym, że gdy wklejam dane z arkusza B do arkusza A, to są one przenoszone tak, jakby odfiltrowania nie było, a mi chodzi o to, żeby to co mam w arkuszu B przenieść na odfiltrowane wiersze w arkuszu A.
Mam nadzieję, że to w miarę jasno opisałem :)
Gdyby ktoś wiedział, jak rozwiązać ten problem byłbym bardzo wdzięczny.
John_Kruger [ Internetowy eksplorator ]
to chyba na odwrot, ale może pomoze:
Ryslaw [ Patrycjusz ]
Dzięki za pomoc, ale niestety nie o to chodzi.
Opiszę to może dokładniej.
W arkuszu A znajdują się dwie kolumny - w pierwszej jest ID, a w drugiej teksty. Odfiltrowałem kolumnę pierwszą po ID, aby w drugiej kolumnie wyświetlały mi się teksty tylko z tym samym ID.
Teraz chcę przekleić zawartość arkusza B do odfiltrowanej kolumny z tekstami.
Ryslaw [ Patrycjusz ]
Podbijam. Może ktoś zna odpowiedź.
yasiu [ Senator ]
poczekaj chwilę... mam mały przestój, może coś wykombinuję :)
hmm... ciekawe....
Ryslaw [ Patrycjusz ]
Znalazłem jakiś kod w PHP, który podobno pozwala wklejać tekst tylko na widoczne komórki. Problem w tym taki, że na PHP znam się mniej więcej równie dobrze co na strzyżeniu owiec kataną i nie mam pojęcia, jak to zastosować w excelu:
Option Explicit
Public StartWB As Workbook
Public StartWS As Worksheet
Public CopyRng As String
Public Sub CopyToVisibleOnly1()
'Start with cell selected that you want to copy.
Set StartWB = ActiveWorkbook
Set StartWS = ActiveSheet
CopyRng = Selection.Address
'Call CopyToVisibleOnly2 after a five-second delay.
Application.OnTime Now() + TimeValue("0:00:04"), "CopyToVisibleOnly2"
End Sub
Private Sub CopyToVisibleOnly2()
'Declare local variables.
Dim EndWB As Workbook, EndWS As Worksheet
Dim Target As Range, CurrCell As Range
Dim x As Long, FromCnt As Long
On Error GoTo CTVOerr
'Select the range where it should be pasted.
Set Target = Application.InputBox _
(Prompt:="Select the first cell in the Paste range", Type:=8)
Set EndWB = ActiveWorkbook
Set EndWS = ActiveSheet
Set CurrCell = Target.Cells(1, 1)
Application.ScreenUpdating = False
'Copy the cells from the original workbook, one at a time.
StartWB.Activate
StartWS.Activate
For x = 1 To Range(CopyRng).Count
StartWB.Activate
StartWS.Activate
Range(CopyRng).Cells(x, 1).Copy
'Return to the target workbook.
EndWB.Activate
EndWS.Activate
CurrCell.Activate
'Only cells in visible rows in the selected
'range are pasted.
Do While (CurrCell.EntireRow.Hidden = True) Or _
(CurrCell.EntireColumn.Hidden = True)
Set CurrCell = CurrCell.Offset(1, 0)
Loop
CurrCell.Select
ActiveSheet.Paste
Set CurrCell = CurrCell.Offset(1, 0)
Next x
Cleanup:
'Free the object variables.
Set Target = Nothing
Set CurrCell = Nothing
Set StartWB = Nothing
Set StartWS = Nothing
Set EndWB = Nothing
Set EndWS = Nothing
Application.ScreenUpdating = True
Exit Sub
CTVOerr:
MsgBox Err.Description
GoTo Cleanup
End Sub
Isaael [ Chor��y ]
PHP to raczej w Excelu nie wykorzystasz, bardziej VB.
A na jakiej wersji Excela pracujesz, bo w 2007 po prostu zaznaczasz pofiltrowany obszar i kopiuje się tylko widoczna zawartość. Niestety nie wiem czy działa to w taki sam sposób w starszych wersjach.
yasiu [ Senator ]
no wlasnie - skopiuj przefiltrowany obszar, dodaj to tych komorek tekst ktory chcesz, usun te komorki ktore sa widoczne po filtrze, zdejmij filtr, podlacz do tego to, co ci zostalo i posortuj... heh... a powyzszy kod to nie PHP :/
Ryslaw [ Patrycjusz ]
Isaael --> używam 2007. Ale nie chodzi o kopiowanie, tylko wklejanie. Z kopiowaniem nie ma problemu - chodzi o to, żeby wkleić to później na odfiltrowane komórki, tak aby nie ruszać komórek ukrytych.
Isaael [ Chor��y ]
no tak, jak zaznaczysz pofiltrowane dane to tylko one zostaną skopiowane i tylko je wkleisz do np. nowego arkusz. A jak korzystasz z 2007 to na 100% to działa.
jak chcesz to prześlij mi jakiś plik .xls na maila ;)
Ryslaw [ Patrycjusz ]
Isaael -- może nie wyjaśniłem się jasno :)
Mam arkusz B - nie jest on filtrowany. Chcę dane z niego przekleić do filtrowanego arkusza A.
I nie działa niestety.
albz74 [ Legend ]
Ryslaw - a jaki jest cel tego cwiczenia, chcesz zamienic jakies dane, czy dopisac ?
Ryslaw [ Patrycjusz ]
albz74 - to nie jest ćwiczenie, tylko często spotykany problem przy pracy.
Dostaję na przykład tłumaczenie w excelu i odfiltrowuję sobie tylko potrzebne rzeczy, które tłumaczę w wordzie, a później chcę je z powrotem przekleić do odfiltrowanego pliku bez konieczności robienia tego komórka po komórce.
cioruss [ oko cyklopa ]
Ryslaw, znam Twoj problem, walczylem z tym jakis miesiac temu. podobno nie da sie tego przeskoczyc, sam skonczylem recznie edytujac tabele 2000x15. 3 dni roboty.
zeby bylo smieszniej, to filtracja sprawia rowniez inne niespodzianki.
np. zostajesz z wierszami 2 i 4, zaznaczasz 'od-do', kasujesz i okazuje sie, ze 3 tez zniknela.
tak czy inaczej, moze ktos zna jakis ciekawy trik, chetnie sam sie naucze
Ryslaw [ Patrycjusz ]
cioruss --> akurat w moim przypadku poradziłem sobie przez posortowanie tekstu przez ID. Ale problem pozostaje, bo nie zawsze istnieje taka możliwość posortowania.
zbm [ do your worst ]
a jak wygląda sprawa, gdybyś przeniósł dane do Accessa na czas tych zabaw z podmienianiem?
w sql możesz dowolne filtry zakładać i przypisywać dane, a potem zaznaczając wszystko wyjść z powrotem do Excela?
wiem, że to luźna uwaga bez rozwiązania, ale robiąc kompletnie inne rzeczy, przy których potrzebowałem powiązania jednych danych z drugimi poprzez bez Accessa robiłbym to co cioruss, tyle samo czasu, a tak zrobiłem sprawę w pół godzinki
cioruss [ oko cyklopa ]
zbm -> jak pracujesz na kompie firmowym, to taki myk nie przejdzie z prostego powodu - brak softu.
zbm [ do your worst ]
aha, tego nie wziąłem pod uwagę (ja po prostu mam na firmowym accessa - wydało mi się oczywiste :)
jeśli to kwestia licencji, to można użyć BASE z open officea. jeśli pilnującego admina z uprawnieniami to moja rada na nic się nie zda
tak btw. jeśli czas, który poświęciłeś na zajęcie się takim problemem kosztował pracodawcę więcej niż kupno takiego np accessa, to zgłosiłbym się do "władz" z petycją, że nie mogę pracować wydajnie:) (pewnie znowu się okaże, ze ja sobie tak mogę w firmie a u was niet:)
cioruss [ oko cyklopa ]
zbm -> w normalnej sytuacji zrobilbym jak radzisz, ale to byla robota na jeden raz i nie przypuszczalem, ze padne na 3 dni. co nie zmienia faktu, ze Twoje rozwiazanie jest calkiem niezle, a sam exel winien miec opcje 'lock filtered table' czy cos w tym typie, zamiast z kolejnymi odslonami dodawac coraz to nowsze rozwiazania w stylu 'program jest madrzejszy od ciebie'.
Meganelle [ Konsul ]
Może to nie jest aż tak eleganckie, ale powinno być skuteczne.
1. w Arkuszu A wpisujesz formułę w całej kolumnie bez filtrowania:
=IF(ISERROR(VLOOKUP(A1;'ArkuszB'!$A:$B;2;0));"";VLOOKUP(A1;'ArkuszB'!$A:$B;2;0))
gdzie:
- A1 to komórka w której jest wartość, po której porównujesz (np. ID)
- 'ArkuszB' to nazwa arkusza z którego chcesz kopiować, przy czym wartość szukana znajduje się w kolumnie A, a wartość do skopiowania w kolumnie B
2. Zaznaczasz wszystkie wypełnione komórki w kolumnie, w której jest formuła (stajesz w najwyższej i wciskasz ctrl+end i potem strzałkę w dół), kopiujesz i wklejasz specjalnie (edit -> paste special) w to samo miejsce wartości.
Meganelle [ Konsul ]
errata do powyższego - oczywiście zaznaczanie jest shift+end i strzałka :)
zbm [ do your worst ]
cioruss -> excel mimo wielu zalet ma tez kilka wkur..zających wad, którymi nie raz usiłował wyprowadzić mnie z równowagi:)
mój ulubiony to zamiana danych w komórkach na jakąś inną wartość przy ustawieniu typu danych na "ogólny"
np numer działki 20/4 zmienia na 20.kwie
(mówię o wsadowym otwieraniu excela z innej aplikacji i wrzucaniu danych:)
po tygodniu znaleźliśmy rozwiązanie
and many more
pzdr
legrooch [ MPO Squad Member ]
np numer działki 20/4 zmienia na 20.kwie
Zmieniliście typ danych? :P
albz74 [ Legend ]
Ryslaw- po co używasz Worda - masz tam jakieś dodatkowe narzędzia do tłumaczenia ?
Ja bym wszystko zrobił w Excelu a wtedy to przeniesienie jest już banalnie proste. Może trzeba by było jakieś małe makro zmajstrować ale co to dla fachowców :)
Ryslaw [ Patrycjusz ]
albz74 --> tak, specjalne narzędzia w rodzaju Tradosa, Wordfasta czy LogoPorta. Poza tym część robi się zupełnie w osobnych aplikacjach w rodzaju TagEditora albo SDLXA.
Poza tym przy tłumaczeniu w excelu jest ten sam problem.
zbm [ do your worst ]
legrooch -> nie rób z siebie zjadacza wszystkich rozumów. Jak mówię, chwilę nam zajęło, zanim doszliśmy jak ustawić typ danych dla kolumn przy nowym dokumencie.
juz sprawa dawno nieaktualna, natomiast bardziej zależało mi na podkreśleniu, że Excel czasem próbując być mądrzejszy przeszkadza, a nie pomaga, niż pochwaleniu się jak daliśmy ciała, że tego nie wiedzieliśmy od razu:)
albz74 [ Legend ]
legrooch jest MS-wymiatacz więc nie podskakuj zbm bo nie masz szans
Ryslaw - myślę, że mógłbym Ci tak zupełnie altruistycznie pomóc :) Odezwij się jakoś, na gg albo wiadomość napisz na PS3 to się zgadamy, powiesz dokładnie jak chcesz a ja Ci napiszę makro które zrobi robotę