2 hücrenin içeriğini yer değiştirmek

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,166
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2025
Arkadaşlar, sayın hocalarım, dosyada isimler var A1:H10 aralığında.
A1 ile B1 yer değiştir yazarım kolay da.
İsimlerin yerleri karışık nerede olduğunu bilmiyorum.
Bu hücre aralığında
Ali Bir ile Ali İki'nin
Osman Gür ile Ahmet Er'in yerlerini değiştir nasıl yapılabilir.
Şimdiden teşekkür ederim.
Saygılarımla
 

Ekli dosyalar

Son düzenleme:

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,166
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2025
Merhaba;
Ekteki gibi olabilir
İyi çalışmalar.
Hocam emeğinize sağlık, ben yanlış ifade ettiysem özür dilerim. Bir UserForm ya da InputBox ile sormayacak. Kodun içinde yazacak direkt olarak. Ben elle kodda değişikliği yaparım. Zaten ayda yılda bir yazılacak. Onu da kod içinde yazarım.
O şekilde yapılabilir mi?
Teşekkür ederim.
 

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
3,998
Excel Vers. ve Dili
2013 Türkçe
Merhaba,
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Range("A1:A1000"), Target) Is Nothing Then GoTo 10
If Target.CountLarge > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Range("B1") = "" Then
Range("B1") = Target.Value
Else
x = Target.Value
x1 = Application.Match(Target.Value, Range("A:A"), 0)
x2 = Application.Match(Range("B1"), Range("A:A"), 0)
Cells(x1, 1) = Range("B1").Value
Cells(x2, 1) = x
Range("B1") = ""

End If
10
If Intersect(Range("B1"), Target) Is Nothing Then GoTo 20
Range("B1") = ""
20
End Sub
B1 hücresi yardımcı olarak kullanılabilir.
 

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,166
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2025
Merhaba,
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Range("A1:A1000"), Target) Is Nothing Then GoTo 10
If Target.CountLarge > 1 Then Exit Sub
If Range("B1") = "" Then
Range("B1") = Target.Value
Else
x = Target.Value
x1 = Application.Match(Target.Value, Range("A:A"), 0)
x2 = Application.Match(Range("B1"), Range("A:A"), 0)
Cells(x1, 1) = Range("B1").Value
Cells(x2, 1) = x
Range("B1") = ""

End If
10
If Intersect(Range("B1"), Target) Is Nothing Then GoTo 20
Range("B1") = ""
20
End Sub
B1 hücresi yardımcı olarak kullanılabilir.
Hocam emeğinize sağlık. Çok güzel ve faydalı bir çalışma olmuş.
 
Son düzenleme:

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,166
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2025
Merhaba,
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Range("A1:A1000"), Target) Is Nothing Then GoTo 10
If Target.CountLarge > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Range("B1") = "" Then
Range("B1") = Target.Value
Else
x = Target.Value
x1 = Application.Match(Target.Value, Range("A:A"), 0)
x2 = Application.Match(Range("B1"), Range("A:A"), 0)
Cells(x1, 1) = Range("B1").Value
Cells(x2, 1) = x
Range("B1") = ""

End If
10
If Intersect(Range("B1"), Target) Is Nothing Then GoTo 20
Range("B1") = ""
20
End Sub
B1 hücresi yardımcı olarak kullanılabilir.
Hocam, tekrar merhaba. Aslında şöyle bir kod olabilir mi?

A1:H10 arasında
"ahmet" ile mehmet" in
"ali" ile "murat" ın
Yerlerini değiştir

Bunu yapacak.
Size zahmet, şimdiden teşekkür ederim.
Saygılarımla.
 

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
3,998
Excel Vers. ve Dili
2013 Türkçe
252495

Kod:
Sub Değiştir()
Application.ScreenUpdating = False
son = Cells(Rows.Count, 10).End(3).Row
For i = 2 To son
Range("A1:H10").Replace Cells(i, 10), "xxx"
Range("A1:H10").Replace Cells(i, 11), Cells(i, 10)
Range("A1:H10").Replace "xxx", Cells(i, 11)
Next
End Sub
 

Korhan Ayhan

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

İşlemleri kod içinden ayarlayabilirsiniz...

Array olarak tanımlı dizilerin içine birden fazla isim tanımlayarak çoklu işlem yapabilirsiniz.

Örnek ; Data_1 = Array("Murat", "Mehmet", "Ayşe")


C++:
Option Explicit

Sub Change_Location()
    Dim My_Table As Range
    Dim Data_1 As Variant
    Dim Data_2 As Variant
    Dim X As Integer
    
    Set My_Table = Range("A1:H10")
    Data_1 = Array("MURAT ER")
    Data_2 = Array("DENEME")
    
    For X = LBound(Data_1) To UBound(Data_1)
        My_Table.Replace Data_1(X), "|", xlWhole
        My_Table.Replace Data_2(X), Data_1(X), xlWhole
        My_Table.Replace "|", Data_2(X), xlWhole
    Next
    
    Set My_Table = Nothing
    
    MsgBox "Verilerin yer değiştirme işlemi tamamlanmıştır.", vbInformation
End Sub
 

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,166
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2025
Alternatif;

İşlemleri kod içinden ayarlayabilirsiniz...

Array olarak tanımlı dizilerin içine birden fazla isim tanımlayarak çoklu işlem yapabilirsiniz.

Örnek ; Data_1 = Array("Murat", "Mehmet", "Ayşe")


C++:
Option Explicit

Sub Change_Location()
    Dim My_Table As Range
    Dim Data_1 As Variant
    Dim Data_2 As Variant
    Dim X As Integer
  
    Set My_Table = Range("A1:H10")
    Data_1 = Array("MURAT ER")
    Data_2 = Array("DENEME")
  
    For X = LBound(Data_1) To UBound(Data_1)
        My_Table.Replace Data_1(X), "|", xlWhole
        My_Table.Replace Data_2(X), Data_1(X), xlWhole
        My_Table.Replace "|", Data_2(X), xlWhole
    Next
  
    Set My_Table = Nothing
  
    MsgBox "Verilerin yer değiştirme işlemi tamamlanmıştır.", vbInformation
End Sub
Hocam çok teşekkür ederim. Bu işte aradığım. Hocam, kuryelerin güzergahını "rastgele fonksiyonu" ile yapıyorum. Çok istisnai Ahmet ile Ali mesela diyor ki, "biz bu hafta yer değiştireceğiz". Tabi paraları da ona göre ödeniyor. Kurye derken, belge taşıyorlar.
Bir de hoca aşırı elzem değil sadece öğrenmek istediğim için soruyorum. Yazdığınız koda ekle yaparak, mesela, belli bir şahıs, (aslında hücrelerde plaka yazıyor) diyelim "aaa", "aaa"'yı A1 hücresine götür, oradakiyle (orada hangi plaka var bilmiyoruz) A1'dekiyle yer değiştir diyebilir miyiz?
İsim yerine Range("A1") yazdım olmadı

Tekrar tekrar teşekkür ederim.
Saygılarımla.
 
Son düzenleme:

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,166
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2025

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,166
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2025
@Korhan Ayhan hocam, başta

Sub Change_Location()
Dim My_Table As Range
Dim Data_1 As Variant
Dim Data_2 As Variant
Dim X As Integer

Set My_Table = Range("A1:H10")
Data_1 = Array("A1")
Data_2 = Array("aaa")

For X = LBound(Data_1) To UBound(Data_1)
My_Table.Replace Data_1(X), "|", xlWhole
My_Table.Replace Data_2(X), Data_1(X), xlWhole
My_Table.Replace "|", Data_2(X), xlWhole
Next

Set My_Table = Nothing

MsgBox "Verilerin yer değiştirme işlemi tamamlanmıştır.", vbInformation
End Sub
diye düşündüm, olmaz, o zaman A1 'i yazı olarak okur.
Data_1 = Array(Range("A1"))
Yazdım

aaa A1'e gidiyor ama A1'deki bbb, aaa'nın yerine gitmiyor.
her iki hücre de aaa olarak kalıyor
 

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,166
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2025
Sub Change_Location()
Dim My_Table As Range
Dim Data_1 As Variant
Dim Data_2 As Variant
Dim X As Integer

Set My_Table = Range("A1:H10")
Data_1 = Array("bbb")
Data_2 = Array(Range("A1"))

For X = LBound(Data_1) To UBound(Data_1)
My_Table.Replace Data_1(X), "|", xlWhole
My_Table.Replace Data_2(X), Data_1(X), xlWhole
My_Table.Replace "|", Data_2(X), xlWhole
Next

Set My_Table = Nothing

MsgBox "Verilerin yer değiştirme işlemi tamamlanmıştır.", vbInformation
End Sub

@Korhan Ayhan hocam bu şekilde 2 tane bbb oluyor. Amaç bbb A1 hücresindeki değerle yer değiştirsin. Hatam nerede acaba? Yardımcı olabilir misiniz?
 

Ekli dosyalar

Korhan Ayhan

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

C++:
Option Explicit

Sub Change_Location()
    Dim My_Table As Range
    Dim Data_1 As Variant
    Dim Data_2 As Variant
    Dim X As Integer
    Dim Old_Data As Variant
    
    Set My_Table = Range("A1:H10")
    Data_1 = Array("bbb")
    Data_2 = Array(Range("A1"))
    
    For X = LBound(Data_1) To UBound(Data_1)
        Old_Data = Data_2(X)
        My_Table.Replace Data_1(X), "|", xlWhole
        My_Table.Replace Data_2(X), Data_1(X), xlWhole
        My_Table.Replace "|", Old_Data, xlWhole
    Next
    
    Set My_Table = Nothing
    
    MsgBox "Verilerin yer değiştirme işlemi tamamlanmıştır.", vbInformation
End Sub
 

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,166
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2025
Deneyiniz.

C++:
Option Explicit

Sub Change_Location()
    Dim My_Table As Range
    Dim Data_1 As Variant
    Dim Data_2 As Variant
    Dim X As Integer
    Dim Old_Data As Variant
   
    Set My_Table = Range("A1:H10")
    Data_1 = Array("bbb")
    Data_2 = Array(Range("A1"))
   
    For X = LBound(Data_1) To UBound(Data_1)
        Old_Data = Data_2(X)
        My_Table.Replace Data_1(X), "|", xlWhole
        My_Table.Replace Data_2(X), Data_1(X), xlWhole
        My_Table.Replace "|", Old_Data, xlWhole
    Next
   
    Set My_Table = Nothing
   
    MsgBox "Verilerin yer değiştirme işlemi tamamlanmıştır.", vbInformation
End Sub
Çok teşekkür ederim hocam, sanırım izlediğim yol yanlıştı. Ben önce içerikten hücre bulamaya çalışmıştım.
Teşekkür ederim. Var olun.
 
Üst