Yes, this is achievable with the action 'template_redirect'
I've left to write code to find sub-category for yourself!
function my_subcat_template() {
if ( <is sub category>) {
include (TEMPLATEPATH . '/category-fun.php');
exit;
}
}
add_action('template_redirect', 'my_subcat_template');
Update
This is a better answer for your problem
Put this is functions.php
What it does is, it redefines how wordpress handles templates for categories ( and subcategories)
function new_subcategory_hierarchy() {
$category = get_queried_object();
$parent_id = $category->category_parent;
$templates = array();
if ( $parent_id == 0 ) {
// Use default values from get_category_template()
$templates[] = "category-{$category->slug}.php";
$templates[] = "category-{$category->term_id}.php";
$templates[] = 'category.php';
} else {
// Create replacement $templates array
$parent = get_category( $parent_id );
// Current first
$templates[] = "subcategory-{$category->slug}.php";
$templates[] = "subcategory-{$category->term_id}.php";
$templates[] = "subcategory.php";
// Parent second
$templates[] = "category-{$parent->slug}.php";
$templates[] = "category-{$parent->term_id}.php";
$templates[] = 'category.php';
}
return locate_template( $templates );
}
add_filter( 'category_template', 'new_subcategory_hierarchy' );
Now you can user subcategory-slug.php
or subcategory-id.php
for specific subcategories
or subcategory.php
in general for all subcategories