Eskiden E-okul'dan tüm öğrencileri seçip kopyalayıp Excel'e "sadece metin" olarak yapıştırdığımda büyük oranda düzgün gelir bir iki düzeltme yapardım sadece, şimdi düzgün gelmediği için bu işi makroyla yaptım.
Notları biçimleriyle birlikte yapıştırıyorum ayrı sheetlere, kodu çalıştırıyorum ve düzenlenmiş halleri sheet olarak ekleniyor.
ChatGPT'ye yazdırdım.
Notları biçimleriyle birlikte yapıştırıyorum ayrı sheetlere, kodu çalıştırıyorum ve düzenlenmiş halleri sheet olarak ekleniyor.
ChatGPT'ye yazdırdım.
Kod:
Sub DuzenleTumSheetler()
Dim wsMevcut As Worksheet
Dim wsYeni As Worksheet
Dim ogrenciNo As String
Dim adSoyad As String
Dim sinav1 As String
Dim sinav2 As String
Dim satirMevcut As Long
Dim satirYeni As Long
Dim yeniSheetAdi As String
Application.ScreenUpdating = False ' Performans için ekran güncellemeyi kapat
' Çalışma kitabındaki tüm sheet'leri döngüye al
For Each wsMevcut In ThisWorkbook.Sheets
' Yeni sheet adı belirle
yeniSheetAdi = wsMevcut.Name & " - Düzenlenmiş"
' Zaten böyle bir sheet varsa onu atla
On Error Resume Next
Set wsYeni = ThisWorkbook.Sheets(yeniSheetAdi)
On Error GoTo 0
If Not wsYeni Is Nothing Then
Set wsYeni = Nothing
GoTo SonrakiSheet
End If
' Yeni sheet oluştur
Set wsYeni = ThisWorkbook.Sheets.Add
wsYeni.Name = yeniSheetAdi
' Yeni sheet'te başlıklar
wsYeni.Cells(1, 1).Value = "Numara"
wsYeni.Cells(1, 2).Value = "Ad Soyad"
wsYeni.Cells(1, 3).Value = "1. Sınav"
wsYeni.Cells(1, 4).Value = "2. Sınav"
' Mevcut sheet'teki verileri işleme
satirMevcut = 1
satirYeni = 2 ' Yeni sheet'teki yazma başlangıç satırı
Do While wsMevcut.Cells(satirMevcut, 1).Value <> ""
ogrenciNo = wsMevcut.Cells(satirMevcut, 1).Value
adSoyad = wsMevcut.Cells(satirMevcut, 2).Value
sinav1 = wsMevcut.Cells(satirMevcut + 1, 3).Value
sinav2 = wsMevcut.Cells(satirMevcut + 1, 4).Value
' Yeni sheet'e verileri yaz
wsYeni.Cells(satirYeni, 1).Value = ogrenciNo
wsYeni.Cells(satirYeni, 2).Value = adSoyad
wsYeni.Cells(satirYeni, 3).Value = sinav1
wsYeni.Cells(satirYeni, 4).Value = sinav2
' Satırları ilerlet
satirMevcut = satirMevcut + 2
satirYeni = satirYeni + 1
Loop
SonrakiSheet:
' Bir sonraki sheet'e geçmeden önce wsYeni değişkenini sıfırla
Set wsYeni = Nothing
Next wsMevcut
Application.ScreenUpdating = True ' Ekran güncellemeyi geri aç
MsgBox "Tüm sheet'ler düzenlendi ve yeni sheet'lere aktarıldı!", vbInformation
End Sub