No hay ninguna "fórmula" para calcular un BIC/SWIFT a partir de un IBAN.
EL BIC/SWIFT se compone de los siguientes elementos:
4 letras que identifican al banco
2 letras que identifican al pais (ES para España)
2 letras o dígitos que son el código de ubicación (MM para Madrid, BB para Barcelona, por ejemplo)
Y opcionalmente 3 dígitos que identifican a la oficina.
Ahora bien, a partir de un IBAN puedes sacar algunos datos, por ejemplo:
Las posiciones 4 a 8 de un IBAN identifican a la entidad (por ejemplo 2100 Caixabank). Te haría falta una tabla con las equivalencias código numérico entidad con letras identificación del banco.
Las posiciones 9 a 12 del IBAN identifican la oficina de la cuenta, pero desconozco si ese número de oficina es el que se usa en el BIC/SWIFT, además de que le sobra un dígito...
Lo mejor sería que construyas tu una tabla con los BIC/SWIFT, a partir de este enlace: https://www.iban.es/bic/espana.html y le añadas un campo con los códigos numéricos de la entidad (https://www.iban.es/codigos-de-entidades-bancarias.html ) . Así, en cualquier momento podrás consultarlo con un DBúsq() a partir de las posiciones 5 a 8 del IBAN (que puedes sacar con la función Mid() )