Since you want the macro to cast a spell (rather than perform some other action that does not take a target from the macro) you cannot use the @unit conditional unless you only want to cast Dispel Magic on the arena1 unit. If you simply want the button to become a normal Dispel Magic button inside arenas, you would need to use an addon that changed the macro when you entered an arena.
-- This needs to match your macro's name:
local macroName = "MacroNameHere"
-- Edit these as desired:
local arenaMacro = "/cast [mod, @player] [@party1, nodead] [] Dispel Magic"
local otherMacro = "/cast Prayer of Mending"
-- Don't edit anything below here. -------------------------------------
local f = CreateFrame("Frame")
f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:SetScript("OnEvent", function()
local macroID = GetMacroIndexByName( "NAME_HERE" )
if macroID then
local _, instanceType = IsInInstance()
local macroText
if instanceType == "arena" then
macroText = arenaMacro
else
macroText = otherMacro
end
EditMacro(macroID, macroName, "INV_Misc_QuestionMark", macroText, 1, 1)
DEFAULT_CHAT_FRAME:AddMessage(string.format("%s macro updated.", macroName))
else
DEFAULT_CHAT_FRAME:AddMessage(string.format("%s macro not found!", macroName))
end
end)