text dosyasından gelen verilere değer vermek

Katılım
19 Mart 2008
Mesajlar
4
Excel Vers. ve Dili
2003 - Türkçe
Arkadaşlar merhaba. Öncelikle sorunumu yanlış yerde dile getirdiysem affola. Forumda arama yaptım ama problemimi hangi isimle arayacağımı bilmediğimden hiçbirşey bulamadım.

Yapmaya çalıştığım (excel'de toplama-çıkarma-çarpma-bölme dışında formül bilgim yok) optik okuyucudan okunan ve text (notepad) olarak olarak kaydedilen öğrenci sınav bilgilerini excel'e aktarıp A/B/C/D/E şıklarına değer vermekten ve bunların toplamını almaktan ibaret.

Optik bilgileri text dosyasında şu sırayla tutuluyor;

568874ACDEBDEACB gibi. Buradaki 568874 öğrenci numarası ve harfler ise formda işaretlenen şıkları gösteriyor ve notepad dosyasında bu şekilde aşağıya doğru yaklaşık 50 öğrencinin numarası ve işaretlediği şıklar gösteriliyor. Ben bu şıklara değer verip "örneğin A=5 B=4 C=3 D=2 E=1 gibi" öğrencinin kaç puan aldığını hesaplamak istiyorum. Tabi text dosyası excel'e aktarıldığında öğrenci numaraları bu olayın dışında kalacak.

Arkadaşlar elimden geldiğince açık anlatmaya çalıştım, cevaplarınızı bekliyorum. Dediğim gibi excel hakkında fazla bir bilgim olmadığından eğer konuyla ilgili bilginiz varsa açık bir şekilde anlatırsanız çok sevinirim. Şimdiden teşekkürler...
 
Katılım
19 Mart 2008
Mesajlar
4
Excel Vers. ve Dili
2003 - Türkçe
Yardımcı olabilecek kimse yok mu arkadaşlar?
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki gibi bir kodlama yapılabilir. Örnek, "xls" ve "txt" dosya da ilave edildi. İnceleyiniz.

Const ile başlayan ilk satırlardaki kırmızı yerlere, kendi klasör ve txt dosya adınızı yazınız.

NOT : Örnekte "not1.txt" dosyasının, "C:\" dizini altında olduğu varsayılmıştır. Örnek üzerinden deneme yapmak için, not1.txt dosyasını "C:\" dizinin altına kopyalayıp kodu çalıştırmalısınız.

Kod:
Option Explicit
Const dizin = [COLOR=red]"C:\"[/COLOR]
Const dosya = [COLOR=red]"not1.txt"[/COLOR]
'------------------------
Sub Not_Hesapla()
Dim con As Object
Dim rs As Object
Dim sql As String
Dim i As Integer
Dim j As Integer
Dim x As Integer
Dim toplam As Integer
Set con = CreateObject("ADODB.connection")
Set rs = CreateObject("ADODB.Recordset")
con.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
                       "Dbq=" & dizin & ";" & _
                       "Extensions=asc,csv,tab,txt;"
con.Open
sql = "SELECT * from " & dosya
rs.Open sql, con, 3, 1
rs.MoveFirst
While Not rs.EOF
      i = i + 1
      Cells(i, 1) = Duzeltme(rs(0), "[^\[0-9]")
      Cells(i, 2) = Duzeltme(rs(0), "[^\[A-Z]")
      For j = 1 To Len(Cells(i, 2))
          Select Case Mid(Cells(i, 2), j, 1)
                Case "A": x = 5
                Case "B": x = 4
                Case "C": x = 3
                Case "D": x = 2
                Case "E": x = 1
                Case Else: x = 0
          End Select
          toplam = x + toplam
       Next j
       Cells(i, 3) = toplam
       toplam = 0: x = 0
       rs.MoveNext
Wend
con.Close
Set rs = Nothing
Set con = Nothing
End Sub
'-----------------------------
Function Duzeltme(kelime As String, patt As String) As String
With CreateObject("VBScript.RegExp")
    .Pattern = patt
    .Global = True
    If .Test(kelime) Then Duzeltme = .Replace(kelime, "")
End With
End Function
 
Katılım
19 Mart 2008
Mesajlar
4
Excel Vers. ve Dili
2003 - Türkçe
Ferhat Bey, çok teşekkür ederim. İlk başta bir hata verdi ama düzelttim. Çok güzel çalışıyor, emeğinize sağlık. Tekrar görüşmek dileğiyle..
 
Üst