Hücredeki Verilerin Bir Kısmını Başka Bir Hücreye Taşımak

11/05/2020, 12:12

sfenksturk

iyi günler arkadaşlar. bir hücrede çalışana ait bilgiler var ve bu bilgiler hücre içinde sadece '/' ile ayrılmış, bu hücre içinde şahsın doğum tarihleri de gün ay yıl bitişik şekilde yani (örn: 19990101), ben tüm kişilerin doğum yıllarını boş durumda olan dogum_yili isimli sutuna atmak istiyorum. Ayrıca bazı kişilerin doğum tarihleri bulunmuyor ve boş durumda o kişinin de doğum tarihi sutunun boş kalması gerekiyor. yardımcı olursanız çok sevinirim. örnek uygulama ektedir.
11/05/2020, 12:37

ozanakkaya

Merhaba, modüle aşağıdaki kodu ekle.

Public Function SplitVeriBul(GVeri As String, GSayi) As Variant
On Error Resume Next
Dim var As Variant
var = Split(GVeri, "/", -1)
SplitVeriBul = var(GSayi)
End Function

Alttaki kodu da sorgunun Sql kaynağına ekle. Sorguyu çalıştırdığında tablodaki alan güncellenir.
UPDATE Tablo1 SET dogum_yili = Left(Right(SplitVeriBul([kisi],2),8),4);
11/05/2020, 12:50

sfenksturk

Sn. Ozanakkaya cevabınızı Örnek üzerinde denedim. Oldu ancak örnekte tarih en sonda olduğundan sorun olmadı. Normalde tarihten sonrada veri olacak. O şekilde denediğimde sizin çözümünüze göre sondan alakasız verileri aliyor. Yanı tarih hücre içinde ikici '/' dan sonra gelen anne baba adından sonra geliyor.

Hücredeki altı haneli yani 'örn:19980102' tarih olan sayıyı bularak yılı diğer hücreye atabilir miyiz.
11/05/2020, 14:57

ozanakkaya

Modüldeki kod:

Public Function SplitVeriBul(GVeri As String) As Variant
Dim Dizi As Variant
Dim Say As Integer

Dizi = Split(GVeri, " ")

For Say = LBound(Dizi) To UBound(Dizi)
If Len(Dizi(Say)) = 8 And IsNumeric(Dizi(Say)) = True Then

SplitVeriBul = Left(Dizi(Say), 4)

Exit For
End If

Next
End Function


Sorgu:

UPDATE Tablo1 SET dogum_yili = SplitVeriBul([kisi]);
11/05/2020, 16:29

berduş

dilerim işinize yarar.
Modül kodu
Function DgTrh(Mtn As String) As String
Dim BlYr, BlYrBit As Integer
Dim StrTrh
BlYr = 0
For x = 1 To 2
BlYr = InStr(BlYr + 1, Mtn, "/")
Next x
BlYrBit = InStr(BlYr + 1, Mtn, "/")
If BlYrBit = 0 Then BlYrBit = Len(Mtn & "")
BlYrBit = BlYrBit + 1 - BlYr

Mtn = Mid(Mtn, BlYr, BlYrBit)

For x = 1 To BlYrBit
If IsNumeric(Mid(Mtn, x, 1)) Then StrTrh = StrTrh & Mid(Mtn, x, 1)
Next x

StrTrh = Right(StrTrh, 2) & "." & Mid(StrTrh, 5, 2) & "." & Left(StrTrh, 4)
DgTrh = StrTrh
End Function
güncelleme kodu
CurrentDb.Execute "UPDATE Tablo1 SET dogum_yili = DgTrh([kisi])"
11/05/2020, 19:46

sfenksturk

Sn. Ozanakkaya nin ikinci devamındaki kodlarla konu çözülmüştür. Ayrıca Sn. Berduş un cevabını deneme fırsatım olmadı. Cevaplarınız için teşekkürler.