Grading system in excel sheet based on marks
显示 更早的评论
I am tyring to paste grade on excel sheet based on marks
i do this but this shows only F in excel sheet .. i want if anybody has marks >=80 then want to show A grade .. and if anybody hay >=70 then B
and if anybody hay less than 70 then want to show F
clc;clear all
filename = 'PROJECT..xlsx';
table = readtable(filename);
data = xlsread(filename);
[r,c] = size(data);
total_courses = c;
table.SumofMarks = zeros(r,1);
table.Percentage = zeros(r,1);
table.StudentGrade = repmat({''},r,1);
% Sum of marks in different courses and their percentage.
format bank
Sum_of_Marks = sum(data,2);
Student_Percentage = Sum_of_Marks./c;
T = horzcat(Sum_of_Marks,Student_Percentage);
N = length(Student_Percentage);
R = reshape(Student_Percentage,1,[]); % convert matrix to row vector
for i = 1:1:N
if R>=80
table.StudentGrade{i} = 'A';
elseif R>=70
table.StudentGrade{i} = 'B';
elseif R <70
table.StudentGrade{i}= 'F';
end
end
writetable(table,filename)
xlswrite(filename,T,1,'H2')
i tried this but this code doesnt work
how i do this
i attached excel file
please help
3 个评论
Image Analyst
2021-1-7
You forgot to attach 'PROJECT..xlsx'.
busy girl
2021-1-7
busy girl
2021-1-8
回答(1 个)
Alan Stevens
2021-1-8
Shouldn't you have
for i = 1:1:N
if R(i)>=80
table.StudentGrade{i} = 'A';
elseif R(i)>=70
table.StudentGrade{i} = 'B';
elseif R(i) <70
table.StudentGrade{i}= 'F';
end
end
11 个评论
busy girl
2021-1-9
Alan Stevens
2021-1-9
You have N defined two lines above this!! My code simply suggests replacing R with R(i). I can't test your code as you haven't supplied the xlsx file.
busy girl
2021-1-9
Alan Stevens
2021-1-9
The following runs for me without any errors:
filename = 'PROJECT..xlsx';
table = readtable(filename);
data = xlsread(filename);
[r,c] = size(data);
total_courses = c;
table.SumofMarks = zeros(r,1);
table.Percentage = zeros(r,1);
table.StudentGrade = repmat({''},r,1);
% Sum of marks in different courses and their percentage.
format bank
Sum_of_Marks = sum(data,2);
Student_Percentage = Sum_of_Marks./c;
T = horzcat(Sum_of_Marks,Student_Percentage);
N = length(Student_Percentage);
R = reshape(Student_Percentage,1,[]); % convert matrix to row vector
for i = 1:N
if R(i)>=80
table.StudentGrade{i} = 'A';
elseif R(i)>=70
table.StudentGrade{i} = 'B';
elseif R(i) <70
table.StudentGrade{i}= 'F';
end
end
writetable(table,filename)
xlswrite(filename,T,1,'H2')
Alan Stevens
2021-1-9
Hmm. Although my previous listing runs without error, the results are nonsense. For some reason the data is read in incorrectly. I had to coopy some of the original spreadsheet and paste it into another one to get sensible results. Here is a working code with sensible results:
filename = 'PROJECTb.xlsx';
fname = 'PROJECTRESULT.xlsx';
table = readtable(filename);
data = xlsread(filename);
[r,c] = size(data);
total_courses = c;
table.SumofMarks = zeros(r,1);
table.Percentage = zeros(r,1);
table.StudentGrade = repmat({''},r,1);
% Sum of marks in different courses and their percentage.
format bank
Sum_of_Marks = sum(data,2);
Student_Percentage = Sum_of_Marks./total_courses;
T = horzcat(Sum_of_Marks,Student_Percentage);
N = length(Student_Percentage);
table.SumofMarks = Sum_of_Marks;
table.Percentage = Student_Percentage;
R = Student_Percentage;
for i = 1:N
if R(i)>=80
table.StudentGrade{i} = 'A';
elseif R(i)>=70
table.StudentGrade{i} = 'B';
elseif R(i) <70
table.StudentGrade{i}= 'F';
end
end
writetable(table,fname)
The PROJECTb.xlsx file is attached.
busy girl
2021-1-9
busy girl
2021-1-9
Alan Stevens
2021-1-9
编辑:Alan Stevens
2021-1-9
I hadn't noticed the number 40 in your coding anywhere. My previous code sets F if total marks are less than 70. The code below shows one way of setting F if any mark is less than 40, or if the total is less than 70. This should be enough for you to modify if you want something else.
filename = 'PROJECTb.xlsx';
fname = 'PROJECTRESULT.xlsx';
table = readtable(filename);
data = xlsread(filename);
[r,c] = size(data);
total_courses = c;
table.SumofMarks = zeros(r,1);
table.Percentage = zeros(r,1);
table.StudentGrade = repmat({''},r,1);
I = find(data<40); %%%%%%%%%%%%%%%%%
[rowfail, colfail] = ind2sub(size(data),I); %%%%%%%%%%%%%%%%%
fails = unique(rowfail); %%%%%%%%%%%%%%%%%
% Sum of marks in different courses and their percentage.
format bank
Sum_of_Marks = sum(data,2);
Student_Percentage = Sum_of_Marks./total_courses;
T = horzcat(Sum_of_Marks,Student_Percentage);
N = length(Student_Percentage);
table.SumofMarks = Sum_of_Marks;
table.Percentage = Student_Percentage;
R = Student_Percentage;
for i = 1:N
if R(i)>=80
table.StudentGrade{i} = 'A';
elseif R(i)>=70
table.StudentGrade{i} = 'B';
elseif R(i) <70 || i==fails %%%%%%%%%%%%%%%%%
table.StudentGrade{i}= 'F';
end
end
writetable(table,fname)
Bushra ashiq
2021-1-15
hI ,, WHEN I try your code .. this shows an error
Operands to the || and && operators must be
convertible to logical scalar values.
Error in LABV1 (line 27)
elseif R(i) <41 && i==fails
Alan Stevens
2021-1-15
Come to think of it, that line should probably be
elseif R(i) <70 || ismember(i,fails)
Bushra ashiq
2021-1-15
hi.. i tried your code and add conditions like these just replace numbers 70 to 40.. but this paste according to total marks where as i want if there is less than 40 marks in any subject then want to paste F grade ..
filename = 'PROJECT..xlsx';
table = readtable(filename);
data = xlsread(filename);
[r,c] = size(data);
total_courses = c;
table.SumofMarks = zeros(r,1);
table.Percentage = zeros(r,1);
table.StudentGrade = repmat({''},r,1);
I = find(data<41);
[rowfail, colfail] = ind2sub(size(data),I);
fails = unique(rowfail);
% Sum of marks in different courses and their percentage.
format bank
Sum_of_Marks = sum(data,2);
Student_Percentage = Sum_of_Marks./total_courses;
T = horzcat(Sum_of_Marks,Student_Percentage);
N = length(Student_Percentage);
table.SumofMarks = Sum_of_Marks;
table.Percentage = Student_Percentage;
R = Student_Percentage;
for i = 1:N
if R(i)>=41 && R(i)<=99
table.StudentGrade{i} = 'A';
elseif R(i) >0 && R(i)<=40 || ismember(i,fails)
table.StudentGrade{i}= 'F';
end
end
writetable(table,filename)
类别
在 帮助中心 和 File Exchange 中查找有关 MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!