I am not certain what you want to do.
One approach:
D = load('exp 8b.txt');
t = D(:,1);
s = D(:,2);
figure
plot(t, s)
grid
title('Original Signal')
xlabel('Time')
ylabel('Amplitude')
sm = mean(s);
L = size(D,1);
Ts = mean(diff(t));
Fs = 1/Ts;
Fn = Fs/2;
FTs = fft(s-sm)/L;
Fv = linspace(0, 1, fix(L/2)+1)*Fn;
Iv = 1:numel(Fv);
figure
plot(Fv, abs(FTs(Iv))*2)
grid
title('Original Signal')
xlabel('Frequency')
ylabel('Amplitude')
sdn = wdenoise(s);
figure
plot(t, sdn)
grid
title('Denoised Signal')
xlabel('Time')
ylabel('Amplitude')
Wp = [859 862]/Fn;
Ws = [855 865]/Fn;
Rp = 1;
Rs = 50;
[n,Wp] = ellipord(Wp,Ws,Rp,Rs);
[z,p,k] = ellip(n,Rp,Rs,Wp);
[sos,g] = zp2sos(z,p,k);
figure
freqz(sos, 2^16, Fs)
s_filt = filtfilt(sos, g, s);
figure
plot(t, s_filt)
grid
title('Filtered Signal')
xlabel('Time')
ylabel('Amplitude')
s_filt = filtfilt(sos, g, sdn);
figure
plot(t, s_filt)
grid
title('Filtered Denoised Signal')
xlabel('Time')
ylabel('Amplitude')
Your signal has significant broadband noise, and a wavelet denoising step is the only way to deal with that. See the documentation for wdenoise (R2017b and later releases) for details on the function. There appears to be a frequency peak at about 861 Hz, and the bandpass filter here selectively (and efficiently) filters the region from 859 Hz to 862 Hz.
Expertiment to get the result you want.