ID tematu: 75322
|
scalanie komórek i wstawianie wartości |
Autor |
Wiadomość |
zbysiomysio
Stały bywalec Excelforum
Wersja: Win Office 2007
Posty: 390
|
Wysłany: 05-12-2023, 10:07 scalanie komórek i wstawianie wartości
|
|
|
Mam arkusz z danymi w których makro ukrywa niepotrzebne kolumny. W arkuszu tym mam scalone komórki B21:AF21 i w nich wstawioną formułę "=B4". Problem w tym, że zależy mi na tym, żeby zostały jednak scalone komórki w rzędzie 21 ale od pierwszej widocznej kolumny w w/w zakresie, czyli jeżeli mam np ukrytą kolumnę B i C, to makro rozdzieliłoby komórki B21:AF21, a następnie zostałyby scalone komórki D21:AF21 i w nich wstawiona wartość z komórki B4. Czy jest taka możliwość?
Zeszyt1.xlsm
|
Pobierz Plik ściągnięto 54 raz(y) 34.95 KB |
|
|
| ID posta:
431859
|
|
|
|
|
|
|
hurgadion
ExcelSpec
Wersja: Win Office 2021
Pomógł: 1202 razy Posty: 2767
|
Wysłany: 05-12-2023, 18:32
|
|
|
Hej,
potestuj takie makro:
Kod: |
Sub scal()
Dim i&, x&
x = 2
For i = 2 To 32
If Columns(i).Hidden Then
x = i
Else
Exit For
End If
Next i
Range("B21:F21").UnMerge
Range(Cells(21, 2), Cells(21, x)).ClearContents
Range(Cells(21, x + 1), Cells(21, "AF")).Merge
Range(Cells(21, x + 1), Cells(21, x + 1)).Value = Range("B4").Value
End Sub
|
Pozdrawiam
scalanie.hidden.xlsm
|
Pobierz Plik ściągnięto 55 raz(y) 36.43 KB |
|
|
| ID posta:
431887
|
|
|
|
|
|
zbysiomysio
Stały bywalec Excelforum
Wersja: Win Office 2007
Posty: 390
|
Wysłany: 07-12-2023, 07:26
|
|
|
hurgadion napisał/a: | Hej,
potestuj takie makro:
|
Dzięki wielkie. makro działa |
|
| ID posta:
431941
|
|
|
|
|
|
zbysiomysio
Stały bywalec Excelforum
Wersja: Win Office 2007
Posty: 390
|
Wysłany: 07-12-2023, 08:33
|
|
|
hurgadion napisał/a: | Hej,
potestuj takie makro:
|
Mam jeszcze pytanie jak można zdefiniować numery wierszy, żeby ta sama czynność została wykonana również w wierszach 28, 35, 42, 50, 62 i 70. Zrobiłem to przez skopiowanie i zmianę nr wierszy kolumn j.n., ale pewnie można to uprościć:
Kod: | Dim i&, x&
x = 2
For i = 2 To 32
If Columns(i).Hidden Then
x = i
Else
Exit For
End If
Next i
Range("B21:F21").UnMerge
Range(Cells(21, 2), Cells(21, x)).ClearContents
Range(Cells(21, x + 1), Cells(21, "AF")).Merge
Range(Cells(21, x + 1), Cells(21, x + 1)).Value = Range("B4").Value
Range("B28:F28").UnMerge
Range(Cells(28, 2), Cells(28, x)).ClearContents
Range(Cells(28, x + 1), Cells(28, "AF")).Merge
Range(Cells(28, x + 1), Cells(28, x + 1)).Value = Range("B4").Value
Range("B35:F35").UnMerge
Range(Cells(35, 2), Cells(35, x)).ClearContents
Range(Cells(35, x + 1), Cells(35, "AF")).Merge
Range(Cells(35, x + 1), Cells(35, x + 1)).Value = Range("B4").Value
Range("B42:F42").UnMerge
Range(Cells(42, 2), Cells(42, x)).ClearContents
Range(Cells(42, x + 1), Cells(42, "AF")).Merge
Range(Cells(42, x + 1), Cells(42, x + 1)).Value = Range("B4").Value
Range("B50:F50").UnMerge
Range(Cells(50, 2), Cells(50, x)).ClearContents
Range(Cells(50, x + 1), Cells(50, "AF")).Merge
Range(Cells(50, x + 1), Cells(50, x + 1)).Value = Range("B4").Value
Range("B62:F62").UnMerge
Range(Cells(62, 2), Cells(62, x)).ClearContents
Range(Cells(62, x + 1), Cells(62, "AF")).Merge
Range(Cells(62, x + 1), Cells(62, x + 1)).Value = Range("B4").Value
Range("B70:F70").UnMerge
Range(Cells(70, 2), Cells(70, x)).ClearContents
Range(Cells(70, x + 1), Cells(70, "AF")).Merge
Range(Cells(70, x + 1), Cells(70, x + 1)).Value = Range("B4").Value |
Najlepiej byłoby, żeby ta sama czynność w tych samych wierszach została również wykonana dla zakresu kolumn AH:BL i BN:CR. |
|
| ID posta:
431945
|
|
|
|
|
|
hurgadion
ExcelSpec
Wersja: Win Office 2021
Pomógł: 1202 razy Posty: 2767
|
Wysłany: 07-12-2023, 09:19
|
|
|
Wydaje mi się, że da się Twoje makro skrócić do makra postaci:
Kod: |
Sub scal_wiele()
Dim i&, x&, tbl
x = 2
For i = 2 To 32
If Columns(i).Hidden Then
x = i
Else
Exit For
End If
Next i
tbl = Array(21, 28, 35, 42, 50, 62, 70)
For i = LBound(tbl) To UBound(tbl)
Range("B" & tbl(i) & ":AF" & tbl(i)).UnMerge
Range(Cells(tbl(i), 2), Cells(tbl(i), x)).ClearContents
Range(Cells(tbl(i), x + 1), Cells(tbl(i), "AF")).Merge
Range(Cells(tbl(i), x + 1), Cells(tbl(i), x + 1)).Value = Range("B4").Value
Next i
End Sub
|
Dla pozostałych kolumn trzeba przeprowadzić podobne rozumowanie, pozdrawiam |
|
| ID posta:
431948
|
|
|
|
|
|
zbysiomysio
Stały bywalec Excelforum
Wersja: Win Office 2007
Posty: 390
|
Wysłany: 07-12-2023, 09:26
|
|
|
hurgadion napisał/a: | Wydaje mi się, że da się Twoje makro skrócić do makra postaci:
|
Dzięki wielkie |
|
| ID posta:
431949
|
|
|
|
|
|
zbysiomysio
Stały bywalec Excelforum
Wersja: Win Office 2007
Posty: 390
|
Wysłany: 08-12-2023, 07:55
|
|
|
hurgadion napisał/a: | Wydaje mi się, że da się Twoje makro skrócić do makra postaci:
|
Zauważyłem jednak jeden błąd i nie bardzo wiem jak to poprawić (pewnie w tej pętli coś trzeba poprawić). Makro działa bez zarzutu jeżeli kolumna B i kolejne są ukryte. Natomiast jeżeli kolumna B jest odkryta wtedy są scalane komórki w kolejnych widocznych kolumnach, Kolumna B jest rozdzielona.
scalanie.hidden.xlsm
|
Pobierz Plik ściągnięto 35 raz(y) 38.83 KB |
|
|
| ID posta:
432000
|
|
|
|
|
|
hurgadion
ExcelSpec
Wersja: Win Office 2021
Pomógł: 1202 razy Posty: 2767
|
Wysłany: 08-12-2023, 09:53
|
|
|
Przetestuj w takim razie takie makro:
Kod: |
Sub scal_wiele2()
Dim i&, x&, tbl
x = 1
For i = 2 To 32
If Columns(i).Hidden Then
x = i
Else
Exit For
End If
Next i
tbl = Array(21, 28, 35, 42, 50, 62, 70)
For i = LBound(tbl) To UBound(tbl)
If x > 1 Then
Range("B" & tbl(i) & ":AF" & tbl(i)).UnMerge
Range(Cells(tbl(i), 2), Cells(tbl(i), x)).ClearContents
Range(Cells(tbl(i), x + 1), Cells(tbl(i), "AF")).Merge
Range(Cells(tbl(i), x + 1), Cells(tbl(i), x + 1)).Value = Range("B4").Value
Else
Range("B" & tbl(i) & ":AF" & tbl(i)).Merge
End If
Next i
End Sub
|
Powinno działać także gdy kolumna B jest odkryta
scalanie.hidden2.xlsm
|
Pobierz Plik ściągnięto 45 raz(y) 37.79 KB |
|
|
| ID posta:
432005
|
|
|
|
|
|
zbysiomysio
Stały bywalec Excelforum
Wersja: Win Office 2007
Posty: 390
|
Wysłany: 08-12-2023, 13:22
|
|
|
hurgadion napisał/a: | Przetestuj w takim razie takie makro:
|
Dzięki wielkie. Makro śmiga bez zarzutów |
|
| ID posta:
432016
|
|
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona uĹźywa plikĂłw cookies.
Kliknij tutaj, Ĺźeby dowiedzieÄ siÄ jaki jest cel uĹźywania cookies oraz jak zmieniÄ ustawienia cookie w przeglďż˝darce.
KorzystajÄ
c ze strony uĹźytkownik wyraĹźa zgodÄ na uĹźywanie plikĂłw cookies, zgodnie z bieĹźÄ
cymi ustawieniami przeglÄ
darki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe
|