A macro-operator is an integrated operator consisting of plural primitive operators and enables a problem solver to solve more efficiently. However, if a learning system generates and saves all macro-operators extracted from worked examples, they will increase explosively and eventually its problem solving will be less efficient than even a non-learning system. Thus, it is very important for macro-operator learning to select only the effective macro-operators. To cope with this problem, we propose a new method to select macrooperators by Perfect Causality, a new heuristic, and generalization of them with EBG. Both in classical robot planning and solving algebraic equations, we made the experiments using a selective macro-learning system with Perfect Causality, a non-selectively macrolearning system and a non-learning system. The experimental results verify much higher efficiency of the selective learning system than the other two systems over a lot of various problems. Finally, we dis...