docs: def facet_by(self, column):
          """
          Faceting creates new TableFu instances with rows matching
          each possible value.
          """
          faceted_spreadsheets = {}
          for row in self.rows:
              if row[column]:
                  col = row[column].value
                  if faceted_spreadsheets.has_key(col):
                      faceted_spreadsheets[col].append(row.cells)
                  else:
                      faceted_spreadsheets[col] = []
                      faceted_spreadsheets[col].append(row.cells)
  
          # create a new TableFu instance for each facet
          tables = []
          for k, v in faceted_spreadsheets.items():
              v.insert(0, self.default_columns)
              table = TableFu(v)
              table.faceted_on = k
              table.formatting = self.formatting
              table.options = self.options
              tables.append(table)
  
          tables.sort(key=lambda t: t.faceted_on)
          return tables