এই স্ক্রিপ্টটি একই কাজ করবে (আরও কিছুটা বেশি)।
কোড
function myInterpolation(x, y, value) {
if(value > Math.max.apply(Math, x) || value < Math.min.apply(Math, x)) {
throw "value can't be interpolated !!";
return;
}
var check = 0, index;
for(var i = 0, iLen = x.length; i < iLen; i++) {
if(x[i][0] == value) {
return y[i][0];
} else {
if(x[i][0] < value && ((x[i][0] - check) < (value - check))) {
check = x[i][0];
index = i;
}
}
}
var xValue, yValue, xDiff, yDiff, xInt;
yValue = y[index][0];
xDiff = x[index+1][0] - check;
yDiff = y[index+1][0] - yValue;
xInt = value - check;
return (xInt * (yDiff / xDiff)) + yValue;
}
ব্যাখ্যা
স্ক্রিপ্টের শুরুতে, একটি ছোট ত্রুটি পরিচালনা করা আছে। এর পরে এটি ইনপুট মানের তুলনায় প্রথম সর্বনিম্ন এন্ট্রিটি খুঁজে পাবে। একবার খুঁজে পাওয়া গেলে, এটি কিছু গণিত করে এবং ফলাফল উপস্থাপন করবে।
বিঃদ্রঃ
যদি নির্বাচিত মান 20 এর সমান হয় তবে স্ক্রিপ্টটি সূত্রটি যেখানে ফলন করবে সেখানে 150 ফিরিয়ে দেয় #DIV/0
।
স্ক্রিনশট
সূত্র
সমস্ত মান বিবেচনায় নিতে নিম্নলিখিত সূত্রটি ব্যবহার করুন
=IF(
ISNA(
MATCH(C2,A2:A7,0)),
FORECAST(
$C$2,
OFFSET(B$2,MATCH($C$2,A$2:A$7,1)-1,0,2,1),
OFFSET(A$2,MATCH($C$2,A$2:A$7,1)-1,0,2,1)),
INDEX(
B2:B7,
MATCH(C2,A2:A7,0)
,0)
)
copy / paste
=IF(ISNA(MATCH(C2, A2:A7, 0)), FORECAST($C$2,OFFSET(B$2,MATCH($C$2,A$2:A$7,1)-1,0,2,1),OFFSET(A$2,MATCH($C$2,A$2:A$7,1)-1,0,2,1)), INDEX(B2:B7, MATCH(C2, A2:A7, 0), 0))
উদাহরণ
সরঞ্জামগুলি> স্ক্রিপ্ট সম্পাদকের অধীনে স্ক্রিপ্ট যুক্ত করুন এবং সেভ বোতামটি টিপুন (কোনও প্রমাণীকরণের প্রয়োজন নেই)।
আমি আপনার জন্য একটি উদাহরণ ফাইল তৈরি করেছি: গুগল শিটের কোনও ব্যাপ্তিতে ডেটা কীভাবে বিভক্ত করা যায়