Soru koşullu düzeltme - VBA ile

Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
Merhaba

PHP:
w3.Worksheets("kanlar").Range("A2:D50")
aralığı içerisinde

#YOK
değerine sahip olan hücreleri ve
"0"
değerine sahip olan hücreleri

=yoksay()

formülü ile yer değiştirmek istiyorum.


PHP:
Dim ssheet1 As Worksheet
Set ssheet1 = ThisWorkbook.Sheets("Kanlar")

nr = ssheet1.Cells(1, 2).End(xlUp).Row

For nInputRow = 1 To 1000
    If ssheet1.Cells(nr, nInputRow) = 0 Then
        ssheet1.Cells(nr, nInputRow).FormulaLocal = "=yoksay()"
    End If
Next nInputRow

For nInputRow = 1 To 1000
    If ssheet1.Cells(nr, nInputRow) = "#YOK" Then
        ssheet1.Cells(nr, nInputRow).FormulaLocal = "=yoksay()"
    End If
Next nInputRow
gibi bir kodu bu iş için modifiye etmeye çalıştım başaramadım.
 
Son düzenleme:

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,524
Excel Vers. ve Dili
Office 365 Türkçe
Merhaba,
Verdiğiniz hücre aralığında formül mü var , yoksa ham veri mi? Eğer formül var ise formül içinde bir ayarlama yapılabilir .
 
Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
Merhaba,
Verdiğiniz hücre aralığında formül mü var , yoksa ham veri mi? Eğer formül var ise formül içinde bir ayarlama yapılabilir .

a2:p50 aralığında sadece değerler var.

0 ya da #yok şeklinde olan değerleri , "yoksay()" formülüne çevirmek istiyorum.
 
Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
PHP:
Sub kod_ys()
Dim ss As Worksheet
Dim nr As Range
Dim tr As String

Set ss = ThisWorkbook.Sheets("Kanlar")

nr = ss.Range("e2")
tr = nr.Value


If tr = "0" Then
       tr.FormulaLocal = "=yoksay()"

End If


End Sub
denemeye devam ediyorum.
 

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,524
Excel Vers. ve Dili
Office 365 Türkçe
Peki hücreye =yoksay() bu formülü uygularsanız yine "#YOK" verecek uygun mudur ?
 
Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
Peki hücreye bu formülü uygularsanız yine "#YOK" verecek uygun mudur ?

evet, uygundur. yoksay formülünü grafiğim için kullanıyorum. ihtiyaç duyduğum da o zaten.


PHP:
Sub yskod()

Dim cell As Range
Dim ws As Worksheet

Set ws = ThisWorkbook.Sheets("Kanlar")

For Each cell In ws.Range("a2:p50")
If cell.Value = "0" Then
    cell.FormulaLocal = "=yoksay()"
    End If
    Next cell
    

End Sub
bunu denedim, mismatch hatası aldım.
 

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,524
Excel Vers. ve Dili
Office 365 Türkçe
Deneyiniz.
Kod:
Sub Emr()
Dim hucre
    For Each hucre In [A2:D50]       
        If IsError(Cells(hucre.Row, hucre.Column).Value) Then
            Cells(hucre.Row, hucre.Column).FormulaR1C1 = "=NA()"
        ElseIf hucre.Value = "0" Then
            Cells(hucre.Row, hucre.Column).FormulaR1C1 = "=NA()"
        End If
    Next
End Sub
 
Son düzenleme:
Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
Deneyiniz.
Kod:
Sub Emr()
Dim hucre
    For Each hucre In [A2:D50]
        dd = IsError(Cells(hucre.Row, hucre.Column))
        If IsError(Cells(hucre.Row, hucre.Column).Value) Then
            Cells(hucre.Row, hucre.Column).FormulaR1C1 = "=NA()"
        ElseIf hucre.Value = "0" Then
            Cells(hucre.Row, hucre.Column).FormulaR1C1 = "=NA()"
        End If
    Next
End Sub

Eline sağlık, gayet güzel çalışıyor.

tek sorun bu işlemin yerini sabitlemek kaldı.

Dim ssheet1 As Worksheet
Set ssheet1 = ThisWorkbook.Sheets("Kanlar")

bu tanımı ekleyeceğim başına.
 
Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
Rica ederim , iyi çalışmalar.

PHP:
Sub Emr()
Dim ss As Worksheet
Dim hucre
Set ss = ThisWorkbook.Sheets("kanlar")
Set hucre = ss.cell
    
    For Each hucre In [A2:P50]
        dd = IsError(Cells(hucre.Row, hucre.Column))
        If IsError(Cells(hucre.Row, hucre.Column).Value) Then
            Cells(hucre.Row, hucre.Column).FormulaR1C1 = "=NA()"
        ElseIf hucre.Value = "0" Then
            Cells(hucre.Row, hucre.Column).FormulaR1C1 = "=NA()"
        End If
    Next
End Sub
bu şekilde başına eklememe rağmen bu işlemi sayfaya özgü hale getiremedim.
 

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,524
Excel Vers. ve Dili
Office 365 Türkçe
PHP:
Sub Emr()
Dim ss As Worksheet
Dim hucre
Set ss = ThisWorkbook.Sheets("kanlar")
Set hucre = ss.cell
 
    For Each hucre In [A2:P50]
        dd = IsError(Cells(hucre.Row, hucre.Column))
        If IsError(Cells(hucre.Row, hucre.Column).Value) Then
            Cells(hucre.Row, hucre.Column).FormulaR1C1 = "=NA()"
        ElseIf hucre.Value = "0" Then
            Cells(hucre.Row, hucre.Column).FormulaR1C1 = "=NA()"
        End If
    Next
End Sub
bu şekilde başına eklememe rağmen bu işlemi sayfaya özgü hale getiremedim.
Bu şekilde deneyin.

Kod:
Sub Emr()
Dim ss As Worksheet
Dim hucre
Set ss = ThisWorkbook.Sheets("kanlar")

    For Each hucre In ss.[A2:P50]
  
        If IsError(ss.Cells(hucre.Row, hucre.Column).Value) Then
            ss.Cells(hucre.Row, hucre.Column).FormulaR1C1 = "=NA()"
        ElseIf hucre.Value = "0" Then
            ss.Cells(hucre.Row, hucre.Column).FormulaR1C1 = "=NA()"
        End If
      
    Next

End Sub
 
Son düzenleme:
Üst