def combine_limits(*limits):
    """
    Combines given data sets limits to single limits.
    
    Args:
        limits: (((float, float), ), )
            Data sets limits.
    
    Returns:
        ((float, float), ) or None
            Combined limits or None if no limits.
    """
    
    limits = [lim for lim in limits if lim is not None]
    if len(limits) == 0:
        return None
    
    size = len(limits[0])
    final = []
    
    for i in range(size):
        values = [val for lim in limits if lim[i] is not None for val in lim[i]]
        final += [[min(values), max(values)]] if values else [None]
    
    if all(lim is None for lim in final):
        final = None
    
    return final