Use logical indexing instead of find() and intersect() -
%Read the data via readmatrix()
num=readmatrix(filename,'Sheet',1,'Range','H:J'); %ExcelのH列からJ列を1列目から3列目として読み込む
X = num(:,1); %1列目全行をXとする
Y = num(:,2); %2列目全行をYとする
Z = num(:,3); %3列目全行をZとする
%Pair multiple conditions on the same array
X(20<X | X<-20)=100; %20より大きいXを100とする %-20未満のXを100とする
Y(9<Y | Y<4)=-1; %9より大きいYを-1とする %2未満のYを-1とする
Z(Z<-1.0 | 0.1<Z)=10; %-1.0未満のZを10とする %0.1より大きいZを10とする
x=(X<100); %100未満のXを探す
y=(Y>0); %0以上のYを探す
z=(Z<10);
xyz = (x & y & z);
X0=X(xyz); %条件を満たす行の1行目をXとする
Y0=Y(xyz); %条件を満たす行の2行目をYとする
Z0=Z(xyz); %条件を満たす行の3行目をZとする
XYZ=[X0 Y0 Z0];
%Narrowing the Z coordinates further
idx = xyz & (Z>-0.5 & Z<0.1) & (abs(X)<7.5)
Z_new=Z(idx);