Parça Al Fonksiyonu Macro Olarak Hazırlamak

Katılım
30 Kasım 2004
Mesajlar
180
Excel Vers. ve Dili
2003 ingilizce
Merhaba arkadaşlar,


İlk önce iyiki bu web sitesi var,sorulara cok kısa zamanda çözüm odaklı cevaplar veriyorsunuz.
Sormak istediğim sorudan önce şunu belirtmek isterim, siteyi kullanmayı ögrendiğini zannediyorum bir soru
sormadan önce eski konulara ve forumlara bakarak cevap arıyorum ve sizleri en az meşgul etmeye çalışıyorum.

Cuma günü site çalışmıyordu acayip korktum ve tedirgin oldum bugün çalıştığını görünce cok sevindim.
Acaba siteyi nasıl ayakta tutuyorsunuz maliyeti nasıl karşılıyorsunuz.
kendi adıma söyleyim site ücretli olursa bile ben üye olmaya devam ederim.

elimde bir sürü data var ve bu dataların belli formatları var.(100 kadar farklı formatta dosyalar üzerinde çalışıyorum)
Ben sizinde yardımıyla bu dataları parçaal fonsiyonuyla biçinmlendiriyorum ve işimide görüyor.
Yanlız bu formatlara yenileri ilave oldukça ya da mevcut formatta değişiklik oldukça fonsiyonlarını değiştirmek
zorunda kalıyorum.

İsteğim ise şu;

excel'de tüm datayı a sutununa aldıktan sonra ;
örneğin b1'e 5
c1'e 3
d1'2 vb.. yazdıgım zaman a sutunundaki
karakterleri buna göre parçalarıp
b1'e 5 karakter
c1'e 3 karakter
d1'2karakter vb.. gibi yazması ve bu parçalama şeklini bana isim sorarak bir profil gibi
saklayak bir macro oluşturması.
umarım cok şey istemedim teşekkürler; :agla: :eek:
 

Hüseyin

Administrator
Yönetici
Admin
Katılım
2 Haziran 2004
Mesajlar
3,534
Excel Vers. ve Dili
Excel 2010 - Türkçe
Re: yardım ve teşekkür

ildizim' Alıntı:
Merhaba arkadaşlar,
İlk önce iyiki bu web sitesi var,sorulara cok kısa zamanda çözüm odaklı cevaplar veriyorsunuz.
Sormak istediğim sorudan önce şunu belirtmek isterim, siteyi kullanmayı ögrendiğini zannediyorum bir soru
sormadan önce eski konulara ve forumlara bakarak cevap arıyorum ve sizleri en az meşgul etmeye çalışıyorum.

Cuma günü site çalışmıyordu acayip korktum ve tedirgin oldum bugün çalıştığını görünce cok sevindim.
Acaba siteyi nasıl ayakta tutuyorsunuz maliyeti nasıl karşılıyorsunuz.
kendi adıma söyleyim site ücretli olursa bile ben üye olmaya devam ederim.
Merhaba,
makro ile ilgili sorunuza eminim diğer arkadaşlar kısa süre içinde cevap vereceklerdir.
Ben dilimin döndüğünce diğer sorunuza cevap vereyim.
Sitenin geçen hafta çalışmaması ile ilgili açıklamayı ukumadıysanız kısaca üzücü bir durum olduğunu söyleyeyim.
Excel.web.tr nin üzerinde bulunduğu serverde benim yine boş zamanlarımda hazırlayıp yayınladığım bazı ücretsiz ve bazı ücretli siteler bulunuyor. Bu ücretli sitelerden gelen para serveri ödemeye yetiyor ve böylece bunlar ücretsiz olarak çalıştırdığım sitelerin de yükünü kaldırıyor.
Þimdilik bu şekilde gidiyor. Ancak eğer dış güçlerde izin verirse ve site bu şekilde büyümeye devam ederse bu karşılama oranı bozulacağa benziyor.
Çünkü excel.web.tr şu anda bile serverdeki tüm diğer sitelerin toplamından daha fazla kullanıcı çekiyor. Bu yük artarak devam ediyor. Bir zaman sonra yükü karşılayamaz olursak sponsorluk sistemine geçebiliriz. Yani güçlü bir hosting şirketi ile anlaşarak bunların reklamını yapar ve karşılığında daha geniş bir servere taşınırız ve belki ücret bile ödemek zorunda kalmayız.
Ama şimdilik bu aşamda değiliz.
Zamanı geldiğinde mutlaka bir çözüm bulunur.
İçiniz rahat olsun.
Desteğiniz için teşekkürler.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,056
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sn ildizim

Sorunuzdan anladığım kadarıyla bir örnek hazırlamıştım. Fakat henüz siteye ekleme yapılamıyor. Bu nedenle yazarak anlatmaya çalışayım. A1 hücresine uzun bir metin yazın. B1,C1 ve D1 hücrelerine sırası ile alınacak parça sayıları olan 5,3,2 rakamlarını, B2,C2 ve D2 hücrelerine ise "=PARÇAAL($A$1;1;B1)" formülünü yazın. C2 hücresindeki formülde B1 yerine C1, D2 hücresindeki formülede B1 yerine D1 yazmanız gerekecektir. Bu durumda B1,C1 ve D1 hücrelerindeki değerleri değiştirerek alınacak parça miktarını değiştirebilirsiniz. Eğer makro ile nasıl birşey istediğinizi bir örnekle(örnek ekleme aktif olduğunda) anlatırsanız sanırım daha iyi anlaşılacaktır. Anlatımın biraz karışık olduğunun farkındayım fakat örneksiz ancak bu kadar oluyor.

selamlar
 
Katılım
31 Temmuz 2004
Mesajlar
56
Kullanılan konu başlığı

Sayın İldizim sorularınızı sorarken lütfen konu başlığını açık seçik belirtiniz.Bu tür kullandığınız ifadeler Arama Motorunu yetersiz kılmaktadır.Saygılarımla
 
Katılım
30 Kasım 2004
Mesajlar
180
Excel Vers. ve Dili
2003 ingilizce
a1,a2,a3 deki değerlerin parçalanması

Dediklerini yaptım ama soruyu eksik sormuşum
a1 konoluna yazdıgım değer 1234567890 olduğunu varsayarsak verdiğin formulle

b2:12345 c2:123 d2:12 oluyor benim isteğim ise bu satırların

b1:12345 c1:678 d1:90 olması birde formulu aşagıya sürükleyerek
a2,a3,a4, değerlerinide bu şekilde parçalamak saygılarımla
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,056
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
12345 için "=PARÇAAL(A1;1;$B$1)" B1=5 olmalı

678 için "=PARÇAAL(A1;6;$C$1)" C1=3 olmalı

90 için "=PARÇAAL(A1;9;$D$1)" D1=2 olmalı

A1,A2,A3..... şeklinde formülü sürükleyerek kopyalamak için dolar işaretini kaldırmalısınız. Formüllerde kaldırdım. Þunuda bilgi olarak vereyim. $ işareti kopyalamada sabit kalmasını istediğiniz değerin önüne konulur örneğin $A1 derseniz A sabit kalır, A$1 derseniz 1 sabit kalır eğer $A$1 derseniz hem A hemde 1 sabit kalacaktır. Bunuda belki bilmeyen arkadaşlar olabilir konu açılmışken bilgi olarak vermek istedim.

selamlar
 
Katılım
30 Kasım 2004
Mesajlar
180
Excel Vers. ve Dili
2003 ingilizce
ok fakat bu degerleri sadece b1 c1 d1'e yazdığım 5,3,2 değerleriyle sağlamam için sabit bir macro olabilirmi?
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
merhaba

sayfanızın


şeklinde olduğunu varsayarsak.

aşağıdaki kod işinizi görecektir.

Kod:
For i = 2 To Cells(65536, 1).End(xlUp).Row
    son = 1
    For j = 2 To Cells(1, 1).End(xlToRight).Column
           Cells(i, j) = Mid(Cells(i, 1), son, Cells(1, j))
        son = son + Cells(1, j)
    Next j
Next i
yapmanız gereken a2 den itibaren aşağı doğru verilerinizi yapıştırmak. ve b1, c1, d1, e1 ....... gerektiği kadar alınması gereken parça boyutlarını girmek. yukarıdaki kodu şekilde görülen butonun içine yapıştırın.
 
Katılım
30 Kasım 2004
Mesajlar
180
Excel Vers. ve Dili
2003 ingilizce
alpen teşekkürler

kod harika olmuş ben buna birkaç ilave yaptım böylece bir dosyada heaader detay ve footer kayıtlarının uzunlukları farklı ise onlarıda(footer kaydını hemen header altına alarak)
parçalayabiliyor. belki birilerinin işine yarar diye koyuyorum.

Sub parcala()
Workbooks.OpenText Filename:=xxxx, Origin:=857, _
StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(89 _
, 1)), TrailingMinusNumbers:=True
ActiveCell.SpecialCells(xlLastCell).Select
Rows("1:1").Select
Selection.Insert Shift:=xlDown
ActiveCell.FormulaR1C1 = "HEADER"
Rows("3:3").Select
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Range("A3").Select
ActiveCell.FormulaR1C1 = "FOOTER"
Range("A5").Select
ActiveCell.FormulaR1C1 = "DETAY"
ActiveCell.SpecialCells(xlLastCell).Select
Selection.Cut
Range("A4").Select
ActiveSheet.Paste




Range("B1").Select
ActiveCell.FormulaR1C1 = "1"
Range("C1").Select
ActiveCell.FormulaR1C1 = "7"
For i = 2 To Cells(65536, 1).End(xlUp).Row
son = 1
For j = 4 To Cells(1, 1).End(xlToRight).Column
Cells(i, j) = Mid(Cells(i, 1), son, Cells(1, j))
son = son + Cells(1, j)
Next j
Next i



Range("B1").Select
ActiveCell.FormulaR1C1 = "1"
Range("C1").Select
ActiveCell.FormulaR1C1 = "15"
Range("D1").Select
ActiveCell.FormulaR1C1 = "7"
Range("E1").Select
ActiveCell.FormulaR1C1 = "15"
Range("F1").Select
ActiveCell.FormulaR1C1 = "7"
Range("G1").Select
ActiveCell.FormulaR1C1 = "15"
Range("H1").Select
ActiveCell.FormulaR1C1 = "7"
Range("I1").Select
ActiveCell.FormulaR1C1 = "15"
Range("J1").Select
ActiveCell.FormulaR1C1 = "7"


For i = 2 To Cells(65536, 1).End(xlUp).Row
son = 1
For j = 2 To Cells(1, 1).End(xlToRight).Column
Cells(i, j) = Mid(Cells(i, 1), son, Cells(1, j))
son = son + Cells(1, j)
Next j
Next i


Range("B1").Select
ActiveCell.FormulaR1C1 = "1"
Range("C1").Select
ActiveCell.FormulaR1C1 = "7"
Range("D1").Select
ActiveCell.FormulaR1C1 = "1"
Range("E1").Select
ActiveCell.FormulaR1C1 = "11"
Range("F1").Select
ActiveCell.FormulaR1C1 = "13"
Range("G1").Select
ActiveCell.FormulaR1C1 = "8"
Range("H1").Select
ActiveCell.FormulaR1C1 = "8"

For i = 6 To Cells(65536, 1).End(xlUp).Row
son = 1
For j = 2 To Cells(1, 1).End(xlToRight).Column
Cells(i, j) = Mid(Cells(i, 1), son, Cells(1, j))
son = son + Cells(1, j)
Next j
Next i
End Sub
 
Üst