• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

en büyük alan seçmek

Tekrar merhaba.

Bence sorunuz gerçekten anlaşılmaz. Ancak son bir öneride bulunmak istedim.
Sayfaya bir düğme/şekil/letin kutusu ekleyin ve verdiğim kod'u bu şekil/düğme/metin kutusuyla ilişkilendirin.
(Şekil/düğme/metin kutusuna farelme zağ tıklayıp MAKRO ATAyı seçin, açılan küçük ekranda makronun adını seçerek işlemi onaylayın)

En çok aynı rengi taşıyan hücrelere kenarlık eklenerek belirginleştirilip,
ilgili hücrelerin adresleri listeleniyor (içerisinde değer bulunmayan hücreler sayma işlemine tabi tutulmaz).
Bu işleme ilişkin olarak, ilk kod cevabımda değişiklik yaptım, ilgili sayfayı yenileyerek kontrol edin.

Sayfanızda renk değişiklikleri yaptığınızda kod'u tekrar çalıştırırsanız yeni duruma göre işlem tekrarlanacaktır elbette.
.
 
Son düzenleme:
Sayın Ömer Baran, benim anladığım, arkadaş içinde sayı olan hücrelerin oluşturduğu en büyük dörtgeni seçmek istiyor. Bunun hücre rengiyle ilgisi yok. Önemli olan içinde sayı olması ve bir dörtgen oluşturması.
 
Sayın Ömer Baran, benim anladığım, arkadaş içinde sayı olan hücrelerin oluşturduğu en büyük dörtgeni seçmek istiyor. Bunun hücre rengiyle ilgisi yok. Önemli olan içinde sayı olması ve bir dörtgen oluşturması.

evet aynen yusuf bey benim demek istediğim bu yapmak istediğimiz.

belkide kod yazmaya gerek kalmayabilir ama biz bulamıyoruz
 
selam,
alternatif olarak
bu örnek de benden olsun...


Not : İstenilenin net olması yönünde Ömer Bey ile aynı düşüncedeyim..

NOT : #20 mesajda belirtilen "renklendirme önemli değil" ibaresinden sonra anlamı kalmayan ek kaldırıldı.


hocam ek dosyayı tekrar yollayabilirmisiniz lütfen dosyayı tekrar incelemek için oradan sonuç çıkabilir mi diye
 
Tekrar merhaba.

Diğer üyelerin cevaplarını denemiş değilim.
Eğer istediğiniz sonucu almışsanız, benim cevabım da alternatif olsun.

Sağ olsun Sayın YUSUF Bey de olması isteğin DÖRTGEN alan olduğu anlaşılmayacaktı.

10 numaralı cevaptaki kod'u tekrar güncelledim (biraz dolambaçlı oldu ama sanırım istediğiniz sonuç alınıyor)

Kontrol edip yeni kod'u deneyiniz.
Dolu en büyük alanı seçer, alan adresini MsgBox ile görünülenir.
.
 
Son düzenleme:
selam,
alternatif olarak
bu örnek de benden olsun...


Not : İstenilenin net olması yönünde Ömer Bey ile aynı düşüncedeyim..

NOT : #20 mesajda belirtilen "renklendirme önemli değil" ibaresinden sonra anlamı kalmayan ek kaldırıldı.



#20 deki eki tekrar yollarmısınız
 
selam,
öncelikle sorunun netleştirilmesi gerekir diye düşünüyorum.
#19 mesajımdaki ek, tamamen hücrelerin dolgu renklerine göre bir seçim yapılması mantığına göre hazırlanmış bir ekti. Ve burada dikdörtgen kavramı da yok , alanlar da dolgu renklerine göre parçalı (farklı farklı) alanlar da olabilmekte idi...
#20 mesajda belirtilen renk önemli değil ile birlikte anlamını yitirdi. Daha sonra da dikdörtgen ve dolu hücreler denilince anlamını daha da bir yitirdi ve istenilene uygun olmayan bir duruma geldi. Karışıklık yaratmaması amacıyla da eki kaldırdım.
Soruya geri dönersek ortada hala belirsizlikler var.
1 - Dikdörtgen seçimi neye göre yapılıyor.
2 - Değerlendirilecek alan nedir? Örneğin B2 : AB55 aralığını değerlerdireceğiz. Ama bazen bu aralık içerisinde kalmak kaydıyla daha farklı alanları da değerlendirmek (örneğin C34 : Z42 değerlendireceğiz ve bu değerlendirilecek alan B2:AB55 ana değerlendirme alanının içerisindedir) gerekebilir gibi durumu netleştirmek lazım.
3 - Renklere göre mi değerlendirilecek, içerdikleri METİN e göre mi değerlendirilecek yoksa içlerinde sayı varsa şu değerler arasındakiler mi değerlendirilecek diye netleştirmek gerekir. Ya da içlerinde sayı yada metin olabilir fakat Değerlendirme alanında BOŞ hücreler de bulunmaktadır İçlerinde sayı ya da metin bulunan hücrelerden oluşan dikdörtgenlerden en fazla dolu hücreye sahip olan mı seçilecektir gibi...

Sorunun netleştirilmesine yönelik hazırlamaya çalıştığım örnek dokuman ektedir. İnceleyin... Gerekirse mesaj kirliliği yaratmamak açısından yeni bir soru açar çözüm aranması sağlanabilir.
Siz ekteki dokumanı inceledikten sonra isteğinizi (netleştirilmiş şekilde) bu mesaja cevap niteliğinde yazın....

link : http://s9.dosya.tc/server/e5dxcy/Soru_Dikdortgen.rar.html
 
Dolu hücrelerde sayısal değer varsa aşağıdaki kod kesin sonuç veriyor. PC'nizin durumuna göre döngü biraz uzun sürebilir.
Kod:
Sub dortgen()
Application.ScreenUpdating = False
On Error Resume Next
Cells.SpecialCells(xlCellTypeConstants, xlNumbers).Select
   Selection.CurrentRegion.Select
 For i = 1 To Selection.Count
  For e = i + 1 To Selection.Count
If Selection(i) <> "" Then
ilk = Selection(i).Address
son = Selection(e).Address
adres = Replace(ilk & ":" & son, "$", "")
If Range(adres).SpecialCells(xlCellTypeConstants, 23).Count = Range(adres).Count Then
If Top < Range(adres).SpecialCells(xlCellTypeConstants, 23).Count Then
Top = Range(adres).SpecialCells(xlCellTypeConstants, 23).Count
adresi = adres
Else
Top = Top
adresi = adresi
End If
End If
End If
Next
Next
Range(adresi).Select
Application.ScreenUpdating = True
MsgBox adresi & " adresinde toplam " & Top & " hücre dolu"
End Sub
 
Son düzenleme:
Yukardaki kod uzun sürüyordu, aşağıdaki kod daha hızlı
Kod:
Sub dortgen()
On Error Resume Next
adresler = Split(Cells.SpecialCells(xlCellTypeConstants, xlNumbers).Address, ",")
For x = 0 To UBound(adresler)
If Topu < Range(adresler(x)).Count Then
Topu = Range(adresler(x)).Count
Else
Topu = Topu
End If
For q = 1 To Range(adresler(x)).Count
dizi = dizi & "." & Replace(Range(adresler(x))(q).Address, "$", "")
Next
Next
dizi = Split(Mid(dizi, 1), ".")
For j = 1 To UBound(dizi)
For k = 1 To UBound(dizi)
ilk = dizi(j)
son = dizi(k)
adres = ilk & ":" & son
If Topu <= Range(adres).Count Then
If Range(adres).SpecialCells(xlCellTypeConstants, 23).Count = Range(adres).Count Then
If Top < Range(adres).SpecialCells(xlCellTypeConstants, 23).Count Then
Top = Range(adres).SpecialCells(xlCellTypeConstants, 23).Count
adresi = adres
Else
Top = Top
adresi = adresi
End If
End If
End If
Next
Next
Range(adresi).Select
MsgBox adresi & " adresinde toplam " & Top & " hücre dolu"
End Sub
 
Geri
Üst