Para uma Tabela Dinâmica funcionar como esperado, você deve organizar seus dados como um banco de dados: uma linha é um registro e uma coluna é um campo que fornece informações sobre esse registro.
Então, primeiro, ter várias colunas contendo vários valores para uma data específica parece errado por entender a situação. Isso se traduz em ter muitos registros (valores) comprimidos em um registro. Por definição, ter várias colunas para diferentes categorias impede que você use esses dados de forma significativa em uma Tabela Dinâmica.
Se você puder modificar seus dados de origem permanentemente, aqui está um layout sugerido:
| Date | Category | Value | 01/01/2011 | 1 | x | 01/01/2011 | 2 | y | 01/01/2011 | 25 | z | 01/02/2011 | 1 | x
Para o qual você pode anexar o TYPE usando uma fórmula VLOOKUP que busca o tipo adequado para sua categoria para evitar duplicação e refletir automaticamente qualquer alteração na tabela TYPE. (Observe que isso pressupõe colunas invertidas em sua tabela de tipos: CATEGORY | TYPE para VLOOKUP funcionar)
| Date | Category | Type | Value | 01/01/2011 | 1 | VLOOKUP(B2, 'TypeTable', 2, 0) | x | 01/01/2011 | 2 | VLOOKUP(C2, 'TypeTable', 2, 0) | y | 01/01/2011 | 25 | VLOOKUP(D2, 'TypeTable', 2, 0) | z | 01/02/2011 | 1 | VLOOKUP(E2, 'TypeTable', 2, 0) | x
Essa tabela conterá muitas linhas, mas alimentar isso em uma Tabela Dinâmica permitirá que você a manipule de todas as formas: por data, por categoria, por tipo.
Na verdade, seus dados de origem seriam um bom RESULTADO de uma Tabela Dinâmica, resumindo os valores por data com um rótulo de coluna na categoria! E Deus sabe que pode ser difícil obter um resultado de Tabela Dinâmica e convertê-lo de volta para dados que podem ser usados para criar outra Tabela Dinâmica. Soluções que incluem trabalho manual, macros ou um monte de fórmulas intermediárias.
Espero que ajude.