dns - BIND - how to return a different IP based on request's subnet

You need to use views:

view "officeA" {
   match-clients { 192.168.1.0/24; };

   include "/etc/named.conf.zones-rfc1912";
   include "/etc/named.conf.zones-common";
   include "/etc/named.conf.zones-officeA";
};

view "officeB" {
   match-clients { 192.168.2.0/24; };

   include "/etc/named.conf.zones-rfc1912";
   include "/etc/named.conf.zones-common";
   include "/etc/named.conf.zones-officeB";
};