• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü Userform dan excele çoklu aktarım

Bu sorun verilen destek sayesinde çözüme ulaştırılmıştır.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Excel005

Yeni Üye
Kullanıcı Bilgileri
Katılım
28 Mar 2023
Mesajlar
44
Aldığı beğeni
5
Excel Versiyonu
Office 2010 TR
Konuyu Başlatan
Merhaba, aşağıdaki userform kodunu sitedeki arkadaşların yardımlarıyla oluşturmuştuk. Bu kod kopyalanan metinde "FPL-" den sonraki ve "-" den önceki metni A sütununa ve aynı satırda "REG/" den sonraki ve if ile belirtilen kıstastakilerden önceki metni B sütununa yazdırıyor. Aşağıdaki metni userforma kopyaladığım zaman ilk kod sadece A sütununa "ABC123", B sütununa "ZZ111" olarak aktarıyor. Bu kodu tek seferlik aktarım için çalıştırabiliyorum. Bu kodu bir döngü içine alıp birden çok metin aktarımı için çalıştırabilirmiyiz? Yani aşağıdaki metni Userform'a kopyaladığımda A ve B sütunlarına aşağıdaki gibi kopyalayabilir miyiz? Ayrıca eğer A sütununa kopyalanacak metin "EEE", "DDD", "FFF", "GGG" ile başlıyorsa o metin ve sonrasındaki B sütununa aktaracağı metni hiç almasın. Yani FPL-EEE369, FPL-DDD475, FPL-FFF265, FPL-GGG632 ile başlayan metinleri excele hiç aktarmasın. Metnin en sonunda FPL123 ile başlayan metin mükerrer olarak yine yazılmış. Bunu alırsa metin iki kere aktarılmış olacak. Bu önlemek için eğer A ve B sütunlarına daha önce aynı metin aktarılmışsa bu metni hiç almasın. Örnek metinde 8 adet aktarılacak FPL- ile başlayan metin olmasına rağmen, yukarıda bahsettiğim kıstaslarla aşağıdaki 3 adet satıra düşmüş hali benim istediğim sonuç. Şimdiden yardımlarınız için teşekkür ederim.

Excele aktarılan sonuç:
A B
ABC123 ZZ111
ABC156 ZZ222
ABC178 ZZ352

Örnek Metin:

(FPL-ABC123-IN -F100/M-SRWY/C -LPPR0600 -N0422F340 TURON
UP600 STG UN741 KEPER -LFPG0155 -DOF/060110
REG/ZZ111 EET/LPPR0020)

(FPL-ABC156-IN -F100/M-SRWY/C -LPPR0600 -N0422F340 TURON
UP600 STG UN741 KEPER -LFPG0155 -DOF/060110
REG/ZZ222 EET/LPPR0020)

(FPL-ABC178-IN -F100/M-SRWY/C -LPPR0600 -N0422F340 TURON
UP600 STG UN741 KEPER -LFPG0155 -DOF/060110
REG/ZZ352 EET/LPPR0020)

(FPL-EEE369-IN -F100/M-SRWY/C -LPPR0600 -N0422F340 TURON
UP600 STG UN741 KEPER -LFPG0155 -DOF/060110
REG/HH213 EET/LPPR0020)

(FPL-DDD475-IN -F100/M-SRWY/C -LPPR0600 -N0422F340 TURON
UP600 STG UN741 KEPER -LFPG0155 -DOF/060110
REG/SS521 EET/LPPR0020)

(FPL-FFF265-IN -F100/M-SRWY/C -LPPR0600 -N0422F340 TURON
UP600 STG UN741 KEPER -LFPG0155 -DOF/060110
REG/CC563 EET/LPPR0020)

(FPL-GGG632-IN -F100/M-SRWY/C -LPPR0600 -N0422F340 TURON
UP600 STG UN741 KEPER -LFPG0155 -DOF/060110
REG/WW741 EET/LPPR0020)

(FPL-ABC123-IN -F100/M-SRWY/C -LPPR0600 -N0422F340 TURON
UP600 STG UN741 KEPER -LFPG0155 -DOF/060110
REG/ZZ111 EET/LPPR0020)

Userform kodu:---------------------------------------------------------------------------------------------------------------------------

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

---------------------------------------------------------------------------------------------------------------
 

Ekli dosyalar

  • DNM.xlsm
    26.7 KB · Gösterim: 8
Çözüm
son hali. eğer REG/ZZ111'den sonra her zaman boşluk varsa yada yeni satıra geçiyorsa tek tek "EET/"," SEL/"..... gibi verileri kontrol etmeden de yapılabilir. ama tekrar vurgulayayım eğer boşluk yada satır başı varsa
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
yerine
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
yazar mısınız?
Bu yeni kod 5 karakter sorunu çözdü. Ancak REG/ZZ111 paragraf sonunda olunca ondan sonra gelen metnide alıyor, yani REG/ZZ111EET/LPPR0020 olarak alıyor. Bunun çözümü için eski kodda düzenleme yapılmıştı. Eski kodda boşluğu değilde belli bazı kıstasları eklemiştik. Bunuda yeni koda ekleyebilirmisiniz.

örnek metin
(FPL-ABC123-IN -F100/M-SRWY/C -LPPR0600 -N0422F340 TURON
UP600 STG UN741 KEPER -LFPG0155 -DOF/060110 REG/ZZ111
EET/LPPR0020 ORGN/ABC)

'eski KOD_____________________________________________________
' s1 = InStr(1, metin, "FPL-")
' s2 = InStr(s1, metin, "-")
' s3 = InStr(s2 + 1, metin, "-")
' m1 = Mid(metin, s2 + 1, s3 - s2 - 1)
' son = Sayfa1.Cells(Rows.Count, "A").End(3).Row + 1
'
' Sayfa1.Cells(son, "A") = m1
' s1 = InStr(1, metin, "REG/")
' s2 = InStr(s1, metin, " EET/")
' If s2 = 0 Then s2 = InStr(1, metin, "EET/")
' If s2 = 0 Then s2 = InStr(1, metin, " SEL/")
' If s2 = 0 Then s2 = InStr(1, metin, " ORGN/")
' If s2 = 0 Then s2 = InStr(1, metin, ")")
' m1 = Mid(metin, s1 + 4, s2 - s1 - 4)
' Sayfa1.Cells(son, "B") = m1
'eski KOD_____________________________________________________
 
Merhaba, elinize sağlık kod çalışıyor. Ancak veriler aktarıldıktan sonra alfabetik sıralanıyor. Bunu alfabetik değilde son kopyalanan veri en altta olacak şekilde değiştirebilirmisiniz. Excele aktar dedikten sonra "bitti" penceresi açılıyor, onuda iptal edebilirmisiniz. Teşekkür ederim.
Son mesajıma ek olarak alfabetik sıralamayı iptal için sildiğim kod mükerrer kayıt engellemeyi devre dışı bıraktı. Alfabetik değilde son kopyalanan veri en altta olacak şekilde kodu değiştirebilirmisiniz. Teşekkür ederim.
 
aşağıdaki kodu dener misiniz?
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
bundan kastınız eğer daha önce excelde var ise eklenmesin mi?
ben sadece son eklenen veri için kontrol eklemiştim
İş çıkışına geldiği için kodu inceleyemedim. Ama mükerrerden kastım a sütununa daha önce "ABC123" varsa bir daha "ABC123" olarak satır eklememesi idi.
 
İş çıkışına geldiği için kodu inceleyemedim. Ama mükerrerden kastım a sütununa daha önce "ABC123" varsa bir daha "ABC123" olarak satır eklememesi idi.
hem A hem de B aynı ise eklenmeyecek değil mi?
A'da var ama B'de yoksa yine eklenecek?
 
Son düzenleme:
REG/ZZ111 paragraf sonunda olunca ondan sonra gelen metnide alıyor,
Aklıma gelmişken sorayım REG/ZZ111'den sonra her zaman boşluk yada yeni satır oluyor mu? Eğer boşluk olmadığında alt satıra gidiyorsa
metin = Replace(Replace(TextBox1.Text, Chr(10), ""), Chr(13), "") satırını değiştirip "" yerine " " koyarak sorun çözülebilir aslında
metin = Replace(Replace(TextBox1.Text, Chr(10), " "), Chr(13), " ")
gibi
 
son hali. eğer REG/ZZ111'den sonra her zaman boşluk varsa yada yeni satıra geçiyorsa tek tek "EET/"," SEL/"..... gibi verileri kontrol etmeden de yapılabilir. ama tekrar vurgulayayım eğer boşluk yada satır başı varsa
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Çözüm
son hali. eğer REG/ZZ111'den sonra her zaman boşluk varsa yada yeni satıra geçiyorsa tek tek "EET/"," SEL/"..... gibi verileri kontrol etmeden de yapılabilir. ama tekrar vurgulayayım eğer boşluk yada satır başı varsa
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Merhaba, gönderdiğiniz kodlara yeni bakabildim. Teşekkür ederim, koda eklediğiniz son değişikliğiniz çalıştı. Ek olarak eğer filtre "EEE", "DDD", ... ise çalışıyor. Bazı metinlerimin yeni "HH" gibi 2li olduğunu fark ettim. Bunu da hariç tutma koduna ekleyebilirmisiniz? Tekrardan teşekkür ederim, elinize sağlık.
 
Bazı metinlerimin yeni "HH" gibi 2li olduğunu fark ettim. Bunu da hariç tutma koduna ekleyebilirmisiniz?
kodun mantığını öğrenmeye çalışın ki her değişiklikte bize başvurmak zorunda kalmayasınız
Left(mA, 3) soldan 3 karakteri gösterir "EEE", "DDD", "FFF", "GGG" bunlar 3 haneli olduğu için soldan 3 hane aldık
eğer "HH" gibi 2 karakter ise ya Left(mA, 2)="HH" gibi bir kod eklersiniz yada mA like "HH*" denetlemesini
 
kodun mantığını öğrenmeye çalışın ki her değişiklikte bize başvurmak zorunda kalmayasınız
Left(mA, 3) soldan 3 karakteri gösterir "EEE", "DDD", "FFF", "GGG" bunlar 3 haneli olduğu için soldan 3 hane aldık
eğer "HH" gibi 2 karakter ise ya Left(mA, 2)="HH" gibi bir kod eklersiniz yada mA like "HH*" denetlemesini
Yardımlarınız için teşekkür ederim.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Konuyu okuyanlar

Geri
Üst