Joint allocation of spectrum and user association is considered for a large cellular network. The objective is to optimize a network utility function such as average delay given traffic statistics collected over a slow timescale. A key challenge is scalability: given n access points (APs), there are O(2n) ways in which the APs can share the spectrum. The number of variables is reduced from O(2n) to O(nk), where k is the number of users, by optimizing over local overlapping neighborhoods, defined by interference conditions, and by exploiting the existence of sparse solutions in which the spectrum is divided into k+1 segments. We reformulate the problem by optimizing the assignment of subsets of active APs to those segments. An ℓo constraint enforces a one-to-one mapping of subsets to spectrum segments, and an iterative (reweighted ℓ1) algorithm is used to find an approximate solution. Numerical results for a network with 100 APs serving several hundred users show the proposed method achieves a substantial increase in total throughput relative to benchmark schemes.