Is there a way to make denoising work in the Cycles viewport?
No, there is not. From the Official Manual Denoising uses render tile information from the engine to make the necessary calculations for the image processing algorithm.


  Denoising filters the resulting image using information (known as
  feature passes) gathered during rendering to get rid of noise, while
  preserving visual detail as well as possible.
  
  To use the option, enable it in the render layers tab of the
  Properties editor. On rendering, it will denoise tile by tile once all
  the surrounding tiles are finished rendering. 


It is not available for progressive renders, and as such doesn't work for viewport previews, which are a form of progressive render.