Criando tipos de dados ordenáveis sob encomenda no excel

1

Eu quero definir um tipo de dados personalizado no Excel 2007, um período.

Basicamente, é uma matriz de datas ou períodos menores, como:

"{ 01-26-1991 , 01-01-2004 to 12-31-2004 , 12-13-2017 }"

que definiria uma coleção arbitrária de datas, no caso acima, em 26 de janeiro de 1991, ano de 2004 e 13 de dezembro de 2017.

Eu gostaria de poder colocar a sintaxe acima em uma célula e fazer com que o excel cuide do gerenciamento, para que eu possa chamar o cell.isWithin (otherDate) para verificar se a data está dentro do intervalo especificado e permitir a tabela dinâmica usual do Excel para classificar pela primeira data no intervalo.

Eu posso escrever o código para fazer o acima, incluindo transformar os dados de uma string em um objeto personalizado e voltar, mas não tenho certeza dos ganchos para que o Excel possa vê-lo como um tipo de dados que pode ser classificado (pelo menos date) e para que qualquer função vba que eu escreva não tenha que criar um objeto, analisar a string no objeto, modificar o objeto e gerar uma string de saída toda vez que um valor precisar ser alterado ou consultado.

Existe algum método para permitir isso? ou outra técnica que me deixaria fazer isso em alguma velocidade vagamente sensível?

Esse tipo de dados será usado para gerar um gráfico de gantt personalizado estranho usando a formatação condicional.

    
por Jello_Raptor 13.10.2011 / 21:01

1 resposta

0

Eu não estou familiarizado com esse tipo de passagem no Excel, desculpe.

Mas se sua coleção for arbitrária, eu a abordaria armazenando uma planilha separada contendo uma tabela com sua lista de intervalos de datas.

1            2
A  1991-01-26   1991-01-26
B  2004-01-01   2004-12-31
C  etc.

Em seguida, crie uma função simples do VBA que receba um argumento de data e retorne um booleano.

Function IsWithinDate(dCell as date) as Boolean
     // Loop to check against each date range in your table

     // Return TRUE or FALSE

         IsWithinDate = TRUE
End Function

Finalmente, sua formatação condicional usa o resultado de sua função:

=IsWithinDate(A1)
    
por 01.11.2011 / 22:34