Parece un poco complicado, ya que tendrías que asegurarte de conocer todos los modos de presentación y que formatos puedes encontrar para lo mismo: kg => kg. => kilo
De todos modos intentaré aportar alguna idea:
Como no controlo el datagrid te dejo a ti su manejo.
Código :
Ver originalFuncion preciokilo (precio As String, presentacion As String) As String
' si es precio por saco
If InStr(1, UCase$(presentacion), "SACO") Then
preciokilo = precio/ Replace(UCase$(presentacion), "SACO", "")
' si es precio por kilo
ElseIf InStr(1, UCase$(presentacion), "KG.") Then
preciokilo = precio
ElseIf InStr(1, UCase$(presentacion), "KG") Then
preciokilo = precio
' si quiero poder usar "kg" y "kg." tengo que comprobar
' si es "kg." con punto antes que mirar si es "kg" sin punto.
' si es precio por tonelada
ElseIf InStr(1, UCase$(presentacion), "TN.") Then
preciokilo = precio / 1000
ElseIf InStr(1, UCase$(presentacion), "TN") Then
preciokilo = precio / 1000
Else
' si es precio por unidad, caja o lo que sea
' puedes ponerlo sin mas
preciokilo = precio
' o avisar que no se conoce
' el tipo de presentación
'msgbox "error en presentacion"
End If
End Function
Es el modo más básico de ver el asunto y con tu ejemplo funcionaría bien.
Suerte.