شنبه, ۲۵ ارديبهشت ۱۳۹۵، ۰۳:۳۷ ب.ظ
Sub norm()
Dim max, min As Single
Dim d2, d1, k As Integer
d1 = -1
d2 = 1
k = 0
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
k = LastRow + 1
For i = 1 To LastRow
LastCol = Cells(i, Columns.Count).End(xlToLeft).Column
k = k + 1
Rw = Range(Cells(i, 1), Cells(i, LastCol))
min = WorksheetFunction.min(Rw)
max = WorksheetFunction.max(Rw)
For j = 1 To LastCol
Cells(k, j) = (((Cells(i, j) - min) * (d2 - d1) / (max - min))) + d1
Next j
Next i
End Sub
مشاهده فیلم این برنامه در آپارات
نکات: حتما اطلاعات را به حالت سطری مرتب کنید، سطر ها عنوان نداشته باشند، d1 و d2 که بازه نرمال سازی هستند به دلخواه خود تغییر دهید.
اگه مشکلی داشتید به گروه تلگرام زیر بیاید
Sub nb()
Dim i, j As Integer
Set sht_Z = ThisWorkbook.Worksheets("sheet2")
LastColumn = sht_Z.UsedRange.Columns(sht_Z.UsedRange.Columns.Count).Column
LastRow = sht_Z.Cells(sht_Z.Rows.Count, "A").End(xlUp).Row
For i = 2 To LastRow
If Cells(i, LastColumn) <= 6 Then
Cells(i, LastColumn) = "A"
ElseIf Cells(i, LastColumn) <= 10 Then
Cells(i, LastColumn) = "B"
Else
Cells(i, LastColumn) = "C"
End If
Next i
End Sub
این دستور مجموع مربعات خطای دو بردار رو محاسبه میکنه. برای حالتی استفاده میشه که مثلا ما یه تابع رو با یه الگوریتمی تقریب زدیم حالا میخوایم ببینیم چقدر تقریبمون درست بوده.
نمونه:
SUMXMY2(array_x,array_y)
SUMXMY2(A3:A9,B3:B9)
Sub avg()
Dim sum As Integer
Dim num As Integer
Dim avg As Single
For j = 2 To 8400
sum = 0
num = 0
avg = 0
For i = 68 To 75
If Cells(i, j) > 0 Then
sum = sum + Cells(i, j)
num = num + 1
End If
If num < 1 Then
Sheets("avg-day").Cells(12, j) = 0
Else
Sheets("avg-day").Cells(12, j) = sum / num
End If
Next i
Next j
End Sub