2014-05-15 33 views
5

Bir dosyaya yazdığım bir Excel elektronik tablom var. Şu anda her hücrenin içeriğini çoğaltmak aşağıdaki yöntemi kullanıyorum: hücrenin içeriği daha uzun 10 karakter uzunluğunda (ya da ancak uzun Belirtmemeyi seçin) ise,Bir sütundaki en uzun dizenin uzunluğunu nasıl alabilirim (Excel)?

cell_contents = Right(Space(10) & Trim(Cells(iRow, iColumn)), 10) 

Ancak o zaman parçaları gevşek verilerin Bir dizi hücre içindeki en uzun dizinin uzunluğunu hızlı ve kolay bir şekilde almanın bir yolu var mı?

gördüğüm insanlar aşağıdaki döngü kullanmanızı öneririz, ama ben tüm hücrelerin üzerinde döngü zorunda kalmadan bunu yapmak mümkün olabilir umuyordum: bir makro olarak

For Each c In SourceRange.Cells 
    if len(c) > b then b = len(c) 
Next c 
+0

Yeni bir sütunda = Len() formülünü kullanın, hücreleri boyuta göre sıralayın ve ilk hücreyi veya döngüden geçirin ve uzunlukları karşılaştırın. – Ripster

+0

@Ripster Sayfasına ek içerik girmekten ve VBA'nın içindeki her şeyi saklamama gerek duyuyorum. – tlewis3348

cevap

7

Tutanak Bu adımlar Maksimum uzunluğu hesaplamak istediğiniz hücre.

1)

=MAX(LEN(A1:A4), 1) -- Edit for your range. 

2) press control-shift enter (FormulaArray)

3) hemen makro

4) VBA'yı görüntülemek kayıt durdurmak bu formül girin. VBA'nıza ihtiyacınız olan şeyi kopyalayın. ,

Selection.FormulaArray = "=MAX(LEN(R[-10]C[1]:R[-1]C[1]))" 
+0

Dizi formülü girerken kayıt yapmak için makro kaydediciyi kullanmayı düşünmeliydim. Bu güzel çalışmalı! Teşekkürler! – tlewis3348

+1

VBA'ya ihtiyacınız olduğunda, formül veya adım adımları ile yapabileceğiniz bir şey için, her zaman makro kaydediciyi kullanırım. Genelde mevcut VBA işlevleri hakkında daha fazla şey öğreniyorum; ve bana araştırma süresini kazandırıyor. – xQbert

+0

Bunu biliyordum ve bunu daha önce de yapmıştım. Bu durumda neden düşünmediğimi bilmiyorum. Çalışma formundaki bir hücreye girmek zorunda kalmadan, sonuç VBA içindeki dizi formülünden hesaplanmasının mümkün olup olmadığını biliyor musunuz? ['Application.Evaluate'] için belgeler (http://office.microsoft.com/en-us/excel-help/HV080550418.aspx) VBA'da Excel ifadelerinin nasıl değerlendirileceğini açıklar, ancak bu dizi formülleri için çalışmaz. – tlewis3348

4

basın Alt-F11 yeni bir modül, yapıştır kodu feryat ekleyin:

size böyle bir şey vermeli.

Public Function maxRangeLength(data As Range) As Integer 
    Dim ret As Integer 

    ret = 0 

    For Each cell In data 
     ret = Application.Max(ret, Len(cell)) 
    Next cell 

    maxRangeLength = ret 
End Function 

Kullanımı:

=maxRangeLength(A8:D11) 
+0

Bu benim için güzel çalıştı. Teşekkür ederim! – David

-1

veri A sütununda ve E-tablonuz için bir başlık satır olduğunu varsayalım. formül aşağı

  • Otomatik Doldurma = UZUNLUK (A2):
    1. yanında yeni sütun oluşturma ve formül girin.
    2. Bu sütun için filtrelemeyi açın ve sütun başlığı hücresindeki aşağı açılan kutuyu tıklatın.
    3. En büyük özetlenen değerin olduğu listenin en altına inin.
      Sütundaki en büyük değer bu olacaktır.
  • +0

    Bu, soruma cevap vermiyor. Sayfadaki formüller değil, VBA ile bir çözüm arıyordum. – tlewis3348

    İlgili konular