formül kopyalama

Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
Kod:
Sub FormulKopyala()
    xy = InputBox("başlangıç hücresini yaz")
    If xy = "" Then
MsgBox "başlangıç hücresini yazmadınız.", vbInformation, "        Uyarı"
Exit Sub
End If
    sh = InputBox("son satır sayısı (harfsiz)")
    If sh = "" Then
MsgBox "son satır numarasını yazmadınız.", vbInformation, "        Uyarı"
Exit Sub
End If
    X = Range("" & xy & "").Row
    y = Range("" & xy & "").Column
    For i = X To sh Step 6
          Cells(X, y).Copy Cells(i, y)
    Next
End Sub
bu makronun yavaş çalıştığını düşünüyorum. normal kopyala yapıştıra göre kat kat uzun sürüyor. farklı bir yöntem var mıdır?
(başkalarına da yardımcı olabileceği ihtimali ile ne işe yaradığını yazayım. bu makro kodu, belirlediğiniz bir hücreyi yine belirlediğiniz satıra kadar ve aşağı doğru 6 satır atlayarak kopyalıyor.)
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Altın Üyelik Bitiş Tarihi
22-12-2019
Kod:
Kodların başına;

Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False

Sonuna ;
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Kodlarınıza ekleyin hızlanacaktır. Hesaplamayı durdurmadığını için he döngüde hesaplama yaptığı için yavaşlıyor.
 
Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
Kod:
Kodların başına;

Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False

Sonuna ;
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Kodlarınıza ekleyin hızlanacaktır. Hesaplamayı durdurmadığını için he döngüde hesaplama yaptığı için yavaşlıyor.
süper oldu. teşekkürler.
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Altın Üyelik Bitiş Tarihi
22-12-2019
Rica ederim Kolay gelsin,
Yalnız şuna dikkat edin;
Kodların ortasında bi koşul sağlanmadğında exit sub var. Eklediğim kodları ondan sonra yazmanızda fayda var.
Ya da kodları şu şekilde düzenleyin.

Kod:
Sub FormulKopyala()
    xy = InputBox("başlangıç hücresini yaz")

    If xy = "" Then
MsgBox "başlangıç hücresini yazmadınız.", vbInformation, "        Uyarı"
Exit Sub
End If
sh = InputBox("son satır sayısı (harfsiz)")
    If sh = "" Then
MsgBox "son satır numarasını yazmadınız.", vbInformation, "        Uyarı"
Exit Sub
End If
scrfalse
    X = Range("" & xy & "").Row
    y = Range("" & xy & "").Column
    For i = X To sh Step 6
          Cells(X, y).Copy Cells(i, y)
    Next
   scrtrue
End Sub

Sub scrfalse()
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

End Sub
Sub scrtrue()
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 
Son düzenleme:
Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
scfalse dan sonrası hatalı oluyor ama ilk yazdıklarınız bana yetti. teşekkürler tekrar.
 
Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
Exit Sub
End If
scfalse

kısmını da scrfalse yapalım tam olsun. :)
 
Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
Kod:
Sub FormulKopyala()
    xy = InputBox("başlangıç hücresini yaz")

    If xy = "" Then
MsgBox "başlangıç hücresini yazmadınız.", vbInformation, "        Uyarı"
 Exit Sub
End If
 sh = InputBox("son satır sayısı (harfsiz)")
    If sh = "" Then
MsgBox "son satır numarasını yazmadınız.", vbInformation, "        Uyarı"
Exit Sub
End If
scrfalse
    X = Range("" & xy & "").Row
    y = Range("" & xy & "").Column
    For i = X To sh Step 6
          Cells(X, y).Copy Cells(i, y)
    Next
   scrtrue
End Sub

Sub scrfalse()
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

End Sub
Sub scrtrue()
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
son hali ile bu kodu yazdım ve evde hızlıydı işe geldim yine yavaş. eskisine göre daha iyi ama yine de yeterli değil. şimdi ben iş yerinde sıkıntı olduğunu mu anlamalıyım yoksa kod daha iyi hale gelebilir mi?
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Altın Üyelik Bitiş Tarihi
22-12-2019
Formül olarak değil de onu da kod olarak yazabilirsiniz? Madem o kadar döngü var...
 
Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
Formül olarak değil de onu da kod olarak yazabilirsiniz? Madem o kadar döngü var...
3. satırdan başlayıp 1350 li satıra kadar gidiyor aslında, yani çok da bir şey yok. amacım arada yani 6 atlayarak giderken aralarda dokunulmaması gereken yerler olduğundan bu fikirle yola çıktım. denemek için aradakileri görmezden gelip kopyala yapıştır yapıyorum ve anında yapıştırıyor, iş koda gelince 15-30 sn arası değişiyor. bu arada son dediğinizi anlamadım :)
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Altın Üyelik Bitiş Tarihi
22-12-2019
O Halde muhtemelen en hızlı çözüm bu olsa gerek :)
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
6 satırlık ritimi açıklarken kullandığınız "dokunulmaması gereken yerler" ibaresini biraz açmak gerekiyor bence.

-- Aradaki hücrelerde başka formüller varsa ilk hücrede, satırın MOD 6 değerine göre mod 6 >> 1 ise şu formül, >>2 ise şu formül ....gibi
formülleri tek formülde toplayıp, ilk hücre liste boyunca kopyalanabilir, ardından da ilk hücre hariç formüllerin sonuçları hücrelere değer olarak yazdırılabilir.
-- Formüllerle yapılan işlem anlaşılırsa da tüm formüllerin hesaplamaları, hiç formül kullanmadan doğrudan makro ile (tek döngü içerisinde) yaptırılabilir.

Tabi belgeyi, formülleri filan bilemiyorum benimkisi fikir, bunun üstünde düşünebilirsiniz.
.
 
Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
formüllerim hep 3. satıra denk gelen ama sütunu farklı bir tablo. yani bazen f3 den f1350 ye bazen h sütunu bazen k sütunu (1350 zaman içerisinde değişiyor. ekleme oluyor.) o yüzden ilk hücre ve son satırı girmek istedim. bunu da yaptım. 3 den başlayıp araları boş olan hücrelerde var boş olmayan hücrelerde var. dolayısı ile aralarda formül olması olmamasını düşünmeden aralara dokunmadan 3-9-15.... 1350 son satır şeklinde gitmeli. değer olarak yazılmamalı çünkü formül sonrası değişken olmalı. formüller de bazen değişebileceğini öngörerek formülü makro ile yaparsam yanlışlara davetiye çıkarabilir.
aslında bu kod zaten istediğimi yapıyor. benim şikayetim yavaş olması. varsa hızlı yolu güzel olur. teşekkürler...
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Kullandığınız formülü/formülleri de bilemiyoruz.
Bunlar bilinse alternatif çözüm önerileri gelebilir diye düşünüyorum.
.
 
Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
yeşil olanlar genelde formüllü, 166 172 satırla baktığınızda neden böyle yaptığımı anlayacaksınız zaten. bazı yerlerde 2 ile giren kısımlardan kaynaklı olarak tek hamlede kopyalama yapamıyoruz. yani 3. satırda yazdığım formülü kopyalayarak aşağı kadar seçip yapıştırdığımda arada 166 - 172 . satırlardaki gibi ritmi bozan yerlerde formüller silinmiş oluyor.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Belgenizi siz biliyorsunuz, formülleri oluşturan da sizsiniz.
Amacı, yapılan/yapılmak istenilen işlemi de siz biliyorsunuz.

Ben şunu dedim, aralardaki boşluklarda başka formül/işlem varsa onu bilmek gerekir.
Ben hala; bir veya iki alt hücrede iken 1 üstteki veya 2 üstteki hücrede çift il olup olmadığı da
MOD((SATIR()-3)/6) işleminin sonucunun 0 olup olmadığı da formül ile kontrol edilebilir, MOD sonucu 0 ve solundaki hücrede köprü ibaresinin olup olmadığı da formül ile kontrol edilebilir ve TEK FORMÜL oluşturulabilir diye düşünüyorum doğrusu.

Aralardaki hücrelerde başka işlem olup olmadığını ve bunlar ile ritimli dediğiniz satırlardaki verilerden etkilenen belgedeki diğer formüllerin de bilinmesi gerekir.

Formüllerin çalışır durumda olduğu ve formülleri etkileyen hücrelerde gerçek veya gerçeği temsil edebilecek nitelikte verilerin olduğu
ve olması gereken sonuçların örneklendirildiği, (işlemi etkilemeyen/işlemden etkilenmeyen alanlardaki verilerin formüllerin bir önemi yok tabi)
bir örnek belge olursa hala yeni önerilerin gelebileceğini düşünüyorum.

Tercihler/belge size ait tabii ki.
.
 
Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
ömer bey teşekkürler. tüm diğer yardımlarınız için de. bu kod işimi geç de olsa görüyor. muhtemelen serverdan kaynaklı olarak ağırlaşıyor. evde gayet hızlı. yormak istemem sizi. sağolun varolun. emeğinize sağlık.
 
Üst