Excel de metin ve sayı içeren hücrelerden sadece sayıyı çıkarmak.

Function sadece_sayi(ifade)
Dim harf As String
Dim uzunluk As Long
uzunluk = Len(ifade)
sadece_sayi = ""
For i = 1 To uzunluk
If IsNumeric(Mid(ifade, i, 1)) Then
sadece_sayi = sadece_sayi & Mid(ifade, i, 1)
End If
Next
End Function

#gif #excel #vba

BeğenFavori PaylaşYorum yap

#Excel'de tek çalışma kitabında 2 ayrı sayfada aynı tablonun olduğunu düşünün. Bir sayfadaki tabloda boyadığım bir ismin diğer sayfada otomatik boyanmasını sağlayabilir miyim?

BeğenFavori PaylaşYorum yap
  • Özgür'üm, Özgür'sün, Özgür @ozgurg

    Evet, Excel'de tek çalışma kitabında 2 ayrı sayfada aynı tabloyu düşünüyorsak, bir sayfadaki tabloda yaptığınız değişikliklerin diğer sayfada da otomatik olarak görünmesini sağlayabilirsiniz. Bu işlem için Excel'in "Hücre Bağlama" veya "Hücre Referansları" özelliğini kullanmanız gerekecektir. Bunu nasıl yapacağınızı adım adım açıklamak için aşağıdaki adımları takip edebilirsiniz:

    1. İki Sayfa Oluşturun:
    İlk olarak, aynı tabloyu içerecek iki ayrı sayfa oluşturun. Bunun için sayfa adlarını farklı belirleyin, böylece farklı sayfaları rahatça ayırt edebilirsiniz.

    2. Veriyi Giriş Yapın:
    Her iki sayfada da aynı tabloyu oluşturun ve verileri giriş yapın. İsimleri boyamak istediğiniz hücreleri seçin ve boyayın.

    3. Bağlantı Yapısı Oluşturun:
    Diğer sayfada otomatik olarak boyanmasını istediğiniz hücreleri, ilk sayfadaki ilgili hücrelere bağlayın. Bağlantı, hedef sayfadaki hücrenin formül kısmında gerçekleştirilecektir.

    4. Hücre Referansını Kullanın:
    Hedef sayfadaki hücreyi seçin, formül çubuğuna "=" işaretini yazın ve ardından boyanmasını istediğiniz kaynak hücrenin konumunu seçin. Örneğin, eğer ilk sayfadaki boyanmış isimler A1 hücresinden başlıyorsa ve ikinci sayfada da A1 hücresine otomatik boyanmasını istiyorsanız, hedef hücreye "='İlk Sayfa'!A1" şeklinde formül yazabilirsiniz.

    5. Diğer Hücrelere de Uygulayın:
    Bu bağlantıyı diğer hücreler için de uygulayın. Diğer hücrelerde de aynı formülü kullanabilirsiniz, ancak hücre referanslarını değiştirmeniz gerekecektir. Örneğin, ikinci sayfadaki boyanmış isimlerin A2 hücresinden başladığını varsayalım; bu durumda "='İlk Sayfa'!A2" şeklinde bir formül kullanabilirsiniz.

    Bu şekilde, bir sayfadaki tablodaki değişiklikler, diğer sayfadaki bağlı hücrelerde otomatik olarak görünecektir. Ancak, kaynak hücrelerdeki verileri silerseniz, bağlı hücreler de boş görünecektir, çünkü bağlantılar o verilere artık ulaşamayacaktır.

    Ayrıca, sayfanın adını ve hücre referanslarını doğru bir şekilde yazmaya dikkat edin. Hücre referanslarını kopyalayarak ve yapıştırarak hata yapmayı önlemek için referansları doğrudan elle girmeniz daha iyidir.

    Unutmayın ki bağlantılar sadece hedef sayfada verileri güncelleyecektir, yani iki sayfada da aynı anda değişiklik yapmanız mümkün değildir. Ancak, bir sayfada yaptığınız değişikliklerin diğer sayfada otomatik olarak yansımasını sağlamak için bu yöntemi kullanabilirsiniz.

  • lterlemez :) :\ :( @lterlemez

    Ya da tamamen bağımsız istenen herhangi iki sayfa arasında yapılacak ise VBA makrosu yazılabilir, muhtemelen.

Excel'de bir klasörün içerisinde bulunan farklı excel dosyalarını tek bir sayfaya kopyalamam gerekiyordu. Normalde Excel'in bu iş için görseldeki gibi bir aracı var. Ama sadece dosyaların içerisindeki çalışma sayfalarının isimleri aynı ise çalışıyor.
Bende çalışma sayfalarının adını toplu bir şekilde değiştirmenin yolunu aradım ve aşağıdaki python scriptini buldum. Hem not olarak dursun hem de lazım olan olursa kolay bulsun.

#excel


import openpyxl
import os
for x in os.listdir():
if x.endswith(".xlsx"): #eğer dosya uzantısı xlsx ise
ss=openpyxl.load_workbook(x) #ss değişkenine x dosyasını yükle
ws=ss.worksheets[0] #ws değişkenine ss deki ilk sayfayı yükle
ss_sheet = ss[ws.title] #ss_sheet değişkenine ss deki ws.title sayfasını yükle
ss_sheet.title = 'Fruit' #ss_sheet değişkeninin ismini Fruit yap
ss.save(x) #ss değişkenini x dosyasına kaydet

BeğenFavori PaylaşYorum yap
  • lterlemez :) :\ :( @lterlemez

    Excel de yapabiliyordur (VBA), kurcalamak lazım.

    • okanaytimur @okanaytimur

      Benimde ilk tercihim o olurdu ama kapalı olan excel dosyalarına erişebilir mi emin olamadım.

    • okanaytimur @okanaytimur

      Hocam o da varmış 😀 Hem daha pratik. Python ile venv oluşturmaya gerek yok

      Sub OPEN_ALL_FILES_IN_FOLDER_RUN_MACRO()

      Dim Path As String
      'path to your folder with excel files
      Path = "C:\Users\LENOVO\Desktop\Fiyat\r\"
      Dim fileName As String

      ' ANY EXCEL FILE
      fileName = Dir(Path & "*.xls*")

      Application.DisplayStatusBar = False
      Application.EnableEvents = False
      Application.ScreenUpdating = False
      Application.DisplayAlerts = False

      Do While fileName ""
      Workbooks.Open Path & fileName

      ' *****************************************************add code to run on each workbook in the folder********************************************
      ActiveSheet.Name = "Balance Sheet"
      ' ****************************************************end code to run on each workbook in the folder*********************************************
      Workbooks(fileName).Close True
      fileName = Dir()
      Loop
      Application.DisplayStatusBar = True
      Application.EnableEvents = True
      Application.ScreenUpdating = True
      Application.DisplayAlerts = True

      End Sub

    • lterlemez :) :\ :( @lterlemez

      @okanaytimur: Vardır, sonuçta yapmak istediğiniz şey ortak dosya türleri için istenebilecek bir iş.... Kolay gelsin.

Excel'de aralarında boşluk olan satırları doldurmak için pratik bir yöntem.
Özellikle ikincisi işime yaradı.
#excel

BeğenFavori PaylaşYorum yap

Toplu bir şekilde dosya adlandırmak için ekstra program indirmeye gerek yok. Excelde A sütünuna dosya adı ve yolunu, B sütununa ise yeni dosya adını ve yolunu görseldeki gibi yazıp aşağıdaki kodu VBA kısmında çalıştırmanız yeterli.
#excel #vba

Klasördeki dosyaların isimlerini de tek seferde getirmek için durumdaki kodu kullanabilirsiniz.

https://teknoseyir.com/durum/1584025

Sub reNamer()
lastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
Do Until i = lastRow
i = i + 1
bir = "A" + CStr(i)
iki = "B" + CStr(i)
Name ActiveSheet.Range(bir) As _
ActiveSheet.Range(iki)
Loop
End Sub

BeğenFavori PaylaşYorum yap

Excel ile düşeyara formülünü kullanarak birden fazla sütunu tek formülle getirebiliyoruz.
Bunun için formülde bizden istenen sütun indis sayısı kısmına "{2;3;4}" açıp getirmek istediğimiz sütun numaralarını noktalı virgül ile ayırarak yazmak. Böylece her sütun için yeniden düşeyara formülü yazmak zorunda kalmıyoruz.

Bunun bir benzerini etopla formülü ile yapmak istiyorum. Yine bir koşula bağlı olarak birden fazla sütunu toplayıp yan yana sütunlarda görüntülesin. Bunu yapabiliyor muyuz acaba?
#excel #gif

BeğenFavori PaylaşYorum yap

Merhaba arkadaşlar, excelde bir konuda destek rica edeceğim. A hücresine girilen bilgiye istinaden B-M arasındaki hücrelere Düşeyara ile bilgi çekiliyor. Daha sonraki süreçte genelde 1-2 gün sonra N hücresine de bilgi çekilmiş oluyor. Ben şunu istiyorum N hücresine bilgi geldiği anda A hücresi kilitlensin ve kimse o hücredeki bilgiyi silemesin. Bunu nasıl yapabilirim.

Ayrıca excelde bir hücreye bilgi nasıl girilirse girilsin benim istediğim formatta ve fontta olmasını nasıl sağlarım

örneğin böyle girilmiş TR740006400000134240292178

ben otomatik buna çevirsin istiyorum TR13 0001 5001 5800 7312 6859 54

#excel
#excelyardım

BeğenFavori PaylaşYorum yap

Merhaba arkadaşlar, excelde bir konuda destek rica edeceğim. A hücresine girilen bilgiye istinaden B-M arasındaki hücrelere Düşeyara ile bilgi çekiliyor. Daha sonraki süreçte genelde 1-2 gün sonra N hücresine de bilgi çekilmiş oluyor. Ben şunu istiyorum N hücresine bilgi geldiği anda A hücresi kilitlensin ve kimse o hücredeki bilgiyi silemesin. Bunu nasıl yapabilirim.

#excel
#excelyardım

BeğenFavori PaylaşYorum yap
  • donkissot @donkissot

    konu hakkında yardımcı olabilecek varsa sevinirim.

  • Hybrid @hybrid

    Excel'de bu işlemi yapmak için birkaç yöntem düşünebiliriz. Öncelikle, A hücresine yazılan bilgiyi koruma altına almak için, A hücresinin "Koruma Altına Alınmış" olarak ayarlanması gerekmektedir. Bu işlemi şu adımları takip ederek gerçekleştirebilirsiniz:

    A hücresini seçin ve "Veri" sekmesine gidin.
    "Koruma Altına Alınmış Hücreleri Ayarla" seçeneğini tıklayın.
    "Koruma Altına Alınmış Hücreleri Ayarla" penceresi açılacaktır. Burada "Koruma Altına Alınmış" seçeneğini işaretleyin ve "Tamam" düğmesine tıklayın.
    Bu şekilde A hücresine yazılan bilgi artık değiştirilemez olacaktır. Ancak, bu özelliği kullanan kullanıcılar hala A hücresindeki bilgiyi silebilirler. Bu nedenle, bu işlemi tam olarak engellemek için, bir "Koruma Altına Alınmış Hücreleri Ayarla" kodu kullanarak bir makro oluşturmanız gerekebilir. Bu makro, N hücresine bilgi girildiğinde otomatik olarak A hücresini koruma altına alacaktır.

    Makro oluşturma işlemini aşağıdaki adımları takip ederek gerçekleştirebilirsiniz:

    "Geliştirici" sekmesine gidin ve "Makro Oluştur" düğmesini tıklayın.
    "Makro Oluştur" penceresi açılacaktır. Burada, makro için bir isim girin ve "Tamam" düğmesine tıklayın.
    Makro düzenleyicisi açılacak ve burada aşağıdaki kodu yazabilirsiniz:
    Copy code
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$N$1" Then
    Range("$A$1").Locked = True
    End If
    End Sub
    Bu kod, N hücresine bilgi girildiğinde otomatik olarak A hücresini koruma altına alacaktır. Bu makro'yu kaydetmek ve çalıştırmak için, "Geliştirici" sekmesindeki "Kaydet" düğmesine tıklayın ve çalıştırmak için "Makro Çalıştır" düğmesini tıklayın.

    Bu işlemleri tamamladıktan sonra, N hücresine bilgi girildiğinde A hücresi otomatik olarak koruma altına alınacak ve bu hücredeki bilgi değiştirilemeyecektir.

    Not: Bu yöntem sadece kullanıcı tarafından yapılan değişiklikleri engellemek için geçerlidir. Ancak, Excel'de yazılı olarak yapılan değişiklikleri engelleyemez. Ayrıca, bu yöntem sadece bir çalışma sayfasında geçerlidir ve diğer çalışma sayfalarına uygulanamaz.