Alt alta sayıları yatay yapma ama!

Katılım
16 Mart 2020
Mesajlar
9
Excel Vers. ve Dili
Excel 2013 türkçe
merhaba arkadaşlar şöyle bir sorum var
Aşağıdaki sayılar alt alta boşluksuz 2,3 veya daha fazla da olabilir bu sayılar yatay eklensin ama sayı boşluk sayı boşluk gibiyse
sayılar alt alta eklensin ama boşluksuz olsun umarım anlatabilmişimdir yardımlarını bekliyorum

örnek a1 hücresi rakam
a2 hücresi rakamsa yanyana olsun

a5 hücresi rakam
a6 hücresi rakam
a7 hğcresi rakamsa yanyana olsun

ama

a5 rakam
a6 boş
a7 rakam
a8 boş
a9 rakam
a10 boş şeklindeyse alt alta olsun rakamlar ama rakam boşluk rakam değilde rakam rakam şeklinde
 
Son düzenleme:

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Sorunuzu ve cözümünü içeren örnek dosya hazırlayıp harici yükleme sitelerine yükleyerek linkini buraya kopayalayabilirsiniz.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
C++:
Sub Yatay()
Kol = 3 'Sonucları C sütunundan başlamak için belirttim. Arzu ederseniz değiştirsiniz. Asla 1 yapmayın
Sat = 1 'Sonucları 1. satırdanbaşlamak için belirttim. Arzu ederseniz değiştirsiniz
For i = 1 To Range("A" & Rows.Count).End(3).Row
    If Cells(i, 1) = "" Then
        Kol = 3: Sat = Sat + 1
    Else
        Cells(Sat, Kol) = Cells(i, 1)
        Kol = Kol + 1
    End If
Next i
End Sub
 
Katılım
21 Aralık 2016
Mesajlar
722
Excel Vers. ve Dili
Office 365 TR
Selamlar,

Ben de 2 adet yardımcı kolon kullanarak formülle çözmeye çalıştım. Dosya ektedir... İncelersiniz... (Şahsi fikrim, Makro ile çözüm daha etkili..)


Açıklama :
Dosyada,
** A1 : A100 aralığında SAYI - METİN ve BOŞ hücreler vardır.
** SAYILAR Yatay satırlara yazdırılıyor. Her Boş ya da Metinden sonra gelen sayı bir alt satırın ilk elemanı oluyor. Bunu takip eden Sayılar ise aynı satırda sağ tarafa doğru kolonlara yazdırılıyor.

Formülle Çözüm :
İki adet yardımcı kolon kullanılarak listeleme yapıldı
1. Yardımcı kolon : B1 : B100
Boşluk ya da Metinlere göre sayı olanlara sıra no verildi.
2. Yardımcı kolon : C1 : C100
Sıra numaralarına göre listede bulunacak adresin R1C1 cinsinden yazdırılması...

Listeleme :
C1 : C100 aralığındaki adreslere göre İNDİS - KAÇINCI işlevleri kullanılarak Listeleme yapıldı...
 
Katılım
16 Mart 2020
Mesajlar
9
Excel Vers. ve Dili
Excel 2013 türkçe
pardon eksik bilgi verdim alt alta rakamlarda rakam 1 boşluk rakam değilde rakam 2 boşluk rakam şeklindeymiş hepsi

alt alta 2 boşluk olduğu için bu seferde macro alt alta rakam 1 boşluk yapıyor
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Boşluk sayısı ne olursa olsun.
Aşağıdaki kodlarla değiştirin.

C++:
Sub Yatay()
sonS = Range("A1").SpecialCells(xlLastCell).Row
SonK = Range("A1").SpecialCells(xlLastCell).Column
If sonS < 2 Then sonS = 2
Range("B1", Cells(sonS, SonK)).ClearContents
Kol = 3 'Sonucları C sütunundan başlamak için belirttim. Arzu ederseniz değiştirsiniz. Asla 1 yapmayın
Sat = 1 'Sonucları 1. satırdanbaşlamak için belirttim. Arzu ederseniz değiştirsiniz
For i = 1 To Range("A" & Rows.Count).End(3).Row
    If Cells(i, 1) = "" Then
        If Cells(i + 1, 1) <> "" Then Kol = 3: Sat = Sat + 1
    Else
        Cells(Sat, Kol) = Cells(i, 1)
        Kol = Kol + 1
    End If
Next i
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alternatif;

C++:
Option Explicit

Sub Transposed_Data_Transfer()
    Dim My_Area As Range, My_Cell As Range, My_Row As Long
    
    Set My_Area = Range("A:A").SpecialCells(xlCellTypeConstants, 1)
    
    Range("C:XFD").ClearContents
    
    My_Row = 1
    
    For Each My_Cell In My_Area.Areas
        Cells(My_Row, 3).Resize(, My_Cell.Count) = Application.Transpose(My_Cell)
        My_Row = My_Row + 1
    Next
    
    MsgBox "Your transaction is complete."
End Sub
 
Üst