Formül Kullanarak Verileri Bir Excel Sayfasından Başka Birine Kopyalama
Bu SSS, verilerinizi nasıl nitelendirebileceğiniz ve taşıyacağınız konusunda sizi yönlendirecektir.
Verileri bir Excel sayfasından diğerine bir formülle kopyalama
Excel'deki geliştirici sekmesini açarak başlayın.Ardından, Sayfa Denetleyicisi UserForm'u kurmanız gerekir. Bu UserForm, verilerin nereye taşındığını, verilerin nereye taşındığını, hangi özelliklerin taşınıp taşınmayacağını belirlemek için hangi sütunun kontrol edileceğini ve sütun girişinin değerinin onu taşımak için ne olması gerektiğini seçmenizi sağlar.
UserForm'unuzu oluştururken, her kontrolü doğru bir şekilde adlandırmaya dikkat ederek aşağıdaki örneği yansıtın:
Artık Userform'u oluşturduğunuza göre, her kontrole kod eklemeniz gerekir. UserForm, CommandButton2 adlı denetimi çift tıklatın. Kullanıcı formunun şeması artık görünmemeli ve şimdi varsayılan kod bloğu ile birlikte kod gezgini ile birlikte sunulmalıdır. Bu özel kod bloğu Özel Alt ComandButton2_Click () ile başlar. İmlecinizi ilk satırın altına, ancak Son Alt yazan satırın önüne getirin. Şimdi, kodun geri kalanına uygulanacak ortak değişkenleri ayarlamak için aşağıdaki kodu girin:
Şimdi, UserForm Gezgini'ne dönün ve KomutDüğmesi3 ile işaretli kontrole çift tıklayın. Bir kez daha, UserForm kod gezgini için ayrılır. İmlecinizi yeni oluşturulan kod bloğunun üzerine getirin ve aşağıdaki kodu girin:
Proje Gezgini'nin Explorer bölümünde, Microsoft Excel Nesneleri'ni sağ tıklatın. Ekle > Modül'ü seçin.
Module1 adlı modülü çift tıklayın ve aşağıdaki ortak değişkenleri yazın:
Şimdi, devam edin ve çalışma kitabınıza üç sayfa daha ekleyin. Şimdi Sayfa1, Sayfa2, Sayfa3 ve Sayfa4 adında dört sayfa olmalıdır.
Sayfa1'de, test verisinin bir örneği olarak aşağıdaki resmi kullanarak, öğeleri yaklaşık 10-15 satıra yerleştirin:
Sonra, Geliştirici sekmesinde (çalışma kitabının üstünde), Denetimler > Ekle > düğme simgesine tıklayın :
Şimdi, düğmeyi sayfanızda herhangi bir yere yerleştirin. Makrolar hakkında sorulduğunda, Yeni'yi seçin.
Yeni makroyu projenin Modül 2'ye yerleştirdiğini fark edeceksiniz. Modül 2'deki kod bloğunu vurgulayın, Modül 2'den kesin. Şimdi, Module1 çift tıklayın. Kod Gezgini açıldığında sağ tıklayın ve Yapıştır'ı seçin. Şimdi, okuyan boş bir kod bloğuna sahip olmalısınız:
İmlecinizi kod bloğunun içine yerleştirin ve aşağıdaki kodu ekleyin:
Buildform adında bir fonksiyon olduğunu fark edeceksiniz . Bu, UserForm'u, envanterini aldıktan sonra uygun sayıda sayfa için ayarlar. Bunu uygulamak için, aşağıdaki kodu Button1_Click () alt yordamının altına Kod Gezgini'ne yerleştirin :
Buildform işlevi içerisinde, Counttabs adı verilen başka bir işlev vardır. Bu kodu Buildform kodunun üzerine, ancak Button1_click alt rutininin altına yerleştirmelisiniz:
Hem TabFrom hem de TabTo değişkenleri ayarlanmışsa, createNew () işlevini çalıştırmanız gerekir. Aşağıdaki kodu, Button1_click alt programlarının üstünde bulunan Kod Gezgini'ne yerleştirin :
Yeni bir sayfa oluşturmayı seçtiyseniz, TabTo değişkenini yeni sayfa adıyla değiştirin. Daha sonra LoopForMove (TabFrom, TabTo) yordamını çalıştırmanız gerekir. Kod Gezgini'nde aşağıdaki kodu girin:
Sayfanızın son satırını bulmak için, aşağıdaki kodu LoopForMove (FromWhatSheet, ToWhatSheet) üstündeki Kod Gezgini'ne girin:
Şimdi, Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal) işlevini kullanarak gerçek kodu taşıyabileceksiniz. LooForMove () ve createNew () işlevleri arasına aşağıdaki kodu yerleştirin:
Bir Döngü işlevi kullanarak, Nitelikli girişleri aramak için Kimden sayfasındaki her satırda dolaşmaya devam edin.
Bir UserForm eylemlerini özetlemek için aşağıdaki resme bakın:
İşte bu sefer, aynı zamanda daha fazla unsur göz önünde bulundurularak verilen çizimde:
Son olarak, yukarıda belirtilen kodun tamamı:
Seçenek AçıkGenel Sekme
Genel TabTo
Dize Olarak Genel Eleme
Genel WhatCol
Genel WhatLogic
Genel CutVal
Genel FormXcel
İşlev FindLastRow (OnWhatsheet)
FindLastRow = Hücreler (ThisWorkbook.Worksheets (OnWhatsheet) .Rows.Count, 1) .End (xlUp) .Row
Son İşlev
İşlev LoopForMove (FromWhatSheet, ToWhatSheet)
Dim LastRow, Cnt
Dize Olarak Dim CellValue
Dim CellLoc
Dim nret
Eğer WhatCol = "" Öyleyse
WhatCol = "A"
Bittiğinde
Elemeleri Eger = "" O zaman
Qualif = "X"
Bittiğinde
ThisWorkbook.Worksheets (FromWhatSheet) .Select
LastRow = FindLastRow (Gönderen sayfadan)
Cnt = LastRow için 1 Adım -1'e
CellLoc = WhatCol ve Cnt
CellValue = ThisWorkbook.Worksheets (FromWhatSheet) .Range (CellLoc) .Value
CellValue = Qualif Öyleyse
nret = Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal)
Bittiğinde
Sonraki
Son İşlev
İşlev Moveit (FromSheet, WhatRange, ToWhere, CutVal)
Dim MoveSheetLastRow
ThisWorkbook.Worksheets ile (FromSheet)
.Select
.Range (WhatRange) .EntireRow.Select
İle bitmek
Selection.Copy
CutVal = True ise
Selection.Cut
Bittiğinde
MoveSheetLastRow = FindLastRow (ToWhere)
ThisWorkbook.Worksheets (ToWhere) .Select
BuWorkbook.Worksheets (ToWhere) .Cells (MoveSheetLastRow + 1, 1) .EntireRow.Select
Selection.Insert
ThisWorkbook.Worksheets (FromSheet) .Select
Application.CutCopyMode = Yanlış
Son İşlev
İşlev createNew ()
Dim NewSheet
TabTo = "Yeni Sayfa" ise
ThisWorkbook.Sheets.Add After: = Sayfalar (Sayfalar.
NewSheet = ThisWorkbook.ActiveSheet.Name
TabTo = Yeni Sayfa
Bittiğinde
Son İşlev
Alt Button1_Click ()
Dim nret
buildform
FormXcel = False O zaman
Tab "" ve TabTo "" sekmesinden Öyleyse
Yeni oluşturmak
nret = LoopForMove (TabFrom, TabTo)
Başka
MsgBox ("Lütfen bir 'Kimden' ve 'Kime' sayfası ayarlayın!")
Bittiğinde
Bittiğinde
Son Alt
İşlev Sayımları ()
Counttabs = ThisWorkbook.Worksheets.Count
Son İşlev
İşlev buildform ()
Dim TabCount
Controller.ComboBox2.AddItem "Yeni Sayfa"
TabCount için = 1 Sayıma
Controller.ComboBox1.AddItem ThisWorkbook.Worksheets (TabCount) .Ad
Controller.ComboBox2.AddItem ThisWorkbook.Worksheets (TabCount) .Ad
Sonraki
Controller.Show
Son İşlev
Bu ipucu için ace3mark'a teşekkür ederiz.
Resim: © Microsoft.