2016-04-07 22 views
2

Karmaşık bir Sorun ama açıklamaya çalışacağım.
İçinde birkaç sütun bulunan "OPL" ana çalışma sayfam var. Verdiğim kriterleri esas alarak Bilgi'yi ayıklayan ve çıkarılan Bilgi ile birlikte tüm sütunları yeni bir çalışma sayfasında "QB" olarak görüntüleyen VBA'da bir kod yazdım.Sütunların Dinamik Gösterimi Bir çalışma sayfasında

Şimdi "OPL" öğesinin A to J'dan 10 sütun olduğunu ve kodumun belirli satırları ayıkladığını ve ilgili sütun başlıkları altındaki "QB" de göstereceğini varsayalım.

Şimdi, kullanıcının "QB" de görmek istediği sütunları seçmesini istiyorum. Bilgiyi sadece C ve D sütunlarını görmek istediğini söylüyor. Böylece Dropdown listesinden C ve D sütunlarını seçer ve makroyu çalıştırdığında, sadece "QB" üzerinde sütun C ve sütun D almalıdır.

p.s. Çok geniş bir soru olduğunu biliyorum ve kodları daha karmaşık hale getirecek şekilde gönderemiyorum. Kodu sormuyorum ama herkes sütunları dinamik olarak gösterme konusunda bana rehberlik edebilir mi?

+0

Kullanıcının ilgili alanları seçmesi için bir liste kutusu ekleyin, ardından diğer alanları analizden hariç tutun veya sütunları QB'de gizli tutun. http://stackoverflow.com/a/17090864/6028892 – Will

+0

Kopyalama işleminizde CELLS yardımcı olmalıdır, bu nedenle "d" nin kombinizdeyseniz, sütun d, hücreleri (satır, "D") açılır. D "," ve "ile SPLIT gerekir ve döndürülen diziyi kullanmanız gerekir. –

+0

@Hızlı yanıt için teşekkürler. Ama bazı puanları temizlemek istiyorum. a) Bir kullanıcının C ve D sütunlarının değerlerini görmesi gerektiğinden, diğer alanları Analiz'den hariç tutamıyorum, ancak diğer kullanıcı olabilir Tüm sütunlara veya belki 5'e ihtiyaç duyar. b) Dinamik olabilir. Örneğin. Listeden A ve C sütunlarını seçtiğimde, "QB" üzerinde yalnızca A ve C sütunları görünmelidir, bu yüzden sütunların gizlenmesi her zaman olduğu gibi yardımcı olmayacaktır çünkü istenmeyen sütunu manuel olarak gizlemem gerekir. – Nikky

cevap

0

gibidir qpl Say:

enter image description here

QB çalışma sayfası kodu bölgesinde bu Olay Makro girin:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim crit As Range, fCol As String 
    Dim lCol As String, fRow As Long, lRow As Long 
    Dim i As Long, j As Long, K1 As Long, K2 As Long 
    Dim wf As WorksheetFunction, Nul As String 

    Set wf = Application.WorksheetFunction 
    Set crit = Range("A1:D1") 
    Nul = "" 
    If Intersect(crit, Target) Is Nothing Then Exit Sub 
    If wf.CountIf(crit, Nul) > 0 Then Exit Sub 
    Application.EnableEvents = False 

     fCol = [A1] 
     lCol = [B1] 
     fRow = [C1] 
     lRow = [D1] 
     K1 = 2 
     K2 = 1 
     For i = fRow To lRow 
      For j = L2Num(fCol) To L2Num(lCol) 
       Cells(K1, K2).Formula = "=QPL!" & Num2L(j) & i 
       K2 = K2 + 1 
      Next j 
      K2 = 1 
      K1 = K1 + 1 
     Next i 
    Application.EnableEvents = True 
End Sub 

Public Function L2Num(S As String) As Long 
    L2Num = Asc(S) - 64 
End Function 

Public Function Num2L(L As Long) As String 
    Num2L = Chr(64 + L) 
End Function 

QB biz girmek ilk istenen kolon A1, B1 son arzu edilen sütun C1- ilk istenilen satır ve bu küçük kriterleri blok doldurulduktan son istenilen satır D1

, makro irade

enter image description here


: istenen veri çalıştırmak ve almak için hücreleri doldurmakMakroyu yeniden çalıştırmak için küçük ölçüt bloğundaki dört hücrenin herhangi birini değiştirin.
İlgili konular