Soru Tablo Düzenleme

Katılım
10 Ağustos 2024
Mesajlar
3
Excel Vers. ve Dili
Excel 360 Turkce
Merhaba,

Excel hakkında hiç bilgim yok ve iş yerinde kullandığımız bir listeden dolayı yardımınıza ihtiyacım var. Bu listede,çalışanların her gün farklı kamyonlara yükleyecekleri ürünlerin gideceği güzergâh ve saatler yazıyor. Yaklaşık 10-12 çalışan olduğumuz için bu liste her gün güncelleniyor. Bu güzergâh ve saatleri daha kolay takip edebilmek için Excel'de nasıl bir çözüm bulabilirim, merak ediyorum.

LISTE ORNEGI ;
CALISAN / AHMET -- CALISAN / CENK
DSU1 / 22H30 ------------HTR9 / 22H30
BTU7 / 23H00 -------------LRT7 / 23H30
ADA6 / 01H15 ------------GZY0 / 01H15
ADI4 / 02H00 -------------YZG2 / 02H00
CRM0 / 02H30 ------------IST3 / 02H30



Liste biraz uzun ve detaylı olsa da, kısaca anlatayım. Bir menü olsa ve ben bu menüden bir saat seçsem, o saate göre hangi çalışanın hangi güzergaha gideceğini gösteren bir liste alsam nasıl olur? Mesela, 22:30'u seçtiğimde;

  • Ahmet - DSU1
  • Cenk - HTR9
gibi bir liste çıksa çok iyi olmaz mı? Böyle bir şey Excel ile yapmak mümkün mü? Şimdiden teşekkür ederim.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Örnek dosyanızı paylaşım sitelerinden birine yükleyip, adresi paylaşırsanız çözüme daha hızlı ulaşabilirsiniz.
 
Katılım
10 Ağustos 2024
Mesajlar
3
Excel Vers. ve Dili
Excel 360 Turkce
Talep ettiğiniz dosya ekte bulunmaktadır. Konuyla ilgili herhangi bir sorunuz olursa çekinmeden sorabilirsiniz.

Tablo
 
Katılım
2 Temmuz 2014
Mesajlar
160
Excel Vers. ve Dili
2021 Türkçe, 64bit
Her satırda en fazla 2 isim mi oluyor?
Daha az yada fazla olabilir mi?
 

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
4,017
Excel Vers. ve Dili
2013 Türkçe
Merhaba,
Sub Tek_Liste()
Range("I:K") = ""
süt = 1
For j = 1 To 2
For i = 1 To Cells(Rows.Count, süt).End(3).Row
If Cells(i, süt) = "" Then GoTo 10
If Cells(i, süt) = "CALISAN" Then
a = a + 1
çalışan = Cells(i, süt + 1)
Cells(a, 9) = çalışan
Cells(a, 10) = Cells(i + 1, süt).Value
Cells(a, 11) = Cells(i + 1, süt + 1).Value
i = i + 1
Else
a = a + 1
Cells(a, 9) = çalışan
Cells(a, 10) = Cells(i, süt)
Cells(a, 11) = Cells(i, süt + 1).Value
End If
10
Next
süt = 5
Next j

End Sub
kod ile tek liste haline getirebilirsiniz.
 
Katılım
2 Temmuz 2014
Mesajlar
160
Excel Vers. ve Dili
2021 Türkçe, 64bit
öncelikle "Ad_Guzergah" adında bir sayfa ekleyin
ikinci olarak excel dosyanıza bir modül ekleyip aşağıdaki kodu ekleyip dener misiniz?
Not 1: csv dosyanızın her satırında sadece 2 isim olduğu varsayılmıştır
Not 2: csv dosyanızın excel dosyanızla aynı dizinde olduğu varsayılmıştır. ilgili klasördeki tüm csv dosyalarından veri alır.
istenirse dosya seçimi eklenebilir

Kod:
Sub VeriAl_hy()
t1 = Timer
Dim dosya, Sht As Worksheet, xVeri As Long, ad(1) As Variant

Application.ScreenUpdating = False
Set objFSO = CreateObject("scripting.filesystemobject")

FilePath = ThisWorkbook.Path & "\"
Filename = Dir(FilePath & "*.csv")
Dim xDz As Variant
Dim DzSon As Variant

        Set Sht = ThisWorkbook.Worksheets("Ad_Guzergah")
        Sht.UsedRange.Offset(1).Clear
        yStr = 0
        Do While Filename <> ""
            dosya = ThisWorkbook.Path & "\" & Filename
            
            Set objts = objFSO.OpenTextFile(dosya)
            txtIcerik = objts.readall
            xDz = Split(txtIcerik, vbNewLine)
            ReDim DzSon(0 To UBound(xDz) * 2, 0 To 2)

            For x = 0 To UBound(xDz)
            dzTmp = Split(xDz(x) & ";", ";")
            If InStr(xDz(x), "CALISAN") > 0 Then ad(0) = dzTmp(1): ad(1) = dzTmp(5)
                If InStr(xDz(x), "CALISAN") = 0 And Len(dzTmp(0) & "") > 0 Then
                    DzSon(yStr, 0) = ad(0)
                    DzSon(yStr, 1) = dzTmp(0)
                    DzSon(yStr, 2) = Replace(dzTmp(1), "H", ":") 'dzTmp(1)
                    yStr = yStr + 1
                    If dzTmp(4) <> "" Then
                        DzSon(yStr, 0) = ad(1)
                        DzSon(yStr, 1) = dzTmp(4)
                        DzSon(yStr, 2) = Replace(dzTmp(5), "H", ":")
                        yStr = yStr + 1
                    End If
                End If
            Next x
          
          Sht.Range("A2").Resize(yStr, 3).Value = DzSon  'txtIcerik
        Filename = Dir()
        Loop

    Application.ScreenUpdating = True
    Debug.Print "VeriAl_hy|", Timer - t1

End Sub
 
Katılım
10 Ağustos 2024
Mesajlar
3
Excel Vers. ve Dili
Excel 360 Turkce
Cevaplarınız için hepinize ayrı ayrı teşekkür ediyorum.
Sanırım Office 365 kullandığımı ayrıca belirtmediğim için sizin zamanınızı boş yere harcadım ve bunun için çok özür diliyorum. İş yerinde dosyaları ortak kullandığımız için Office 365 kullanmaya karar vermiştik ama yaptığım araştırmalar sonucunda VBA erişimi olmadığını öğrendim.

Bu yüzden verdiğiniz kodları yazamıyorum. Tekrar teşekkür ediyorum ve gerçekten çok üzgünüm.
 
Katılım
2 Temmuz 2014
Mesajlar
160
Excel Vers. ve Dili
2021 Türkçe, 64bit
Uzun uzun yazmaya erindim
YZye yazdirdim)
Excel’de VBA sayfasını açmak için şu adımları izleyebilirsiniz:
  1. Geliştirici Sekmesini Etkinleştirin:
    • Excel’de üst menüden Dosya > Seçenekler > Şeridi Özelleştir yolunu izleyin.
    • Sağ taraftaki listeden Geliştirici kutusunu işaretleyin ve Tamam’a tıklayın.
  2. VBA Düzenleyicisini Açın:
    • Geliştirici sekmesinde, Visual Basic düğmesine tıklayın. Bu, VBA Düzenleyicisini açacaktır.
    • Alternatif olarak, Alt + F11 kısayolunu kullanabilirsiniz.
  3. Yeni Bir Modül Ekleyin:
    • VBA Düzenleyicisinde, sol taraftaki Project Explorer penceresinde, çalışmak istediğiniz dosyanın üzerine sağ tıklayın.
    • Insert > Module seçeneğini tıklayın. Bu, yeni bir modül oluşturur ve kod yazabileceğiniz boş bir sayfa açar.
Bu adımları izleyerek VBA sayfasını açabilir ve kod yazmaya başlayabilirsiniz
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Hatırladığım kadarıyla network ortamında makro çalışmıyor.
 
Üst